Как создать опцию обмена WhatsApp в моем приложении

Я новичок в разработке Android. Я не знаю Android Studio и Java. Но я разрабатываю приложение с помощью Google, YouTube и Stackru. Теперь я хочу добавить опцию поделиться (изображение + текст) в моем Recyclerview изображение в WhatsApp.

Изображение загружается с Firebase хранение с использованием Picasso Lib. Я не знаю как конвертировать Firebase ImageView в bitmap,

Я добавил кнопку "Поделиться" под каждым элементом. Как создать опцию общего доступа в этой кнопке?

Это моя основная деятельность:

public class ReviewMainActivity extends AppCompatActivity {

    private static final String APP_ID = "ca-app-pub-8867939169855032~3069406037";

    FirebaseDatabase database;
    DatabaseReference MCR;

    RecyclerView recyclerView;
    RecyclerView.LayoutManager layoutManager;

    FirebaseRecyclerAdapter<ReviewModel, ReviewViewHolder> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_review_main);

        Toolbar toolbar = findViewById(R.id.ReviewMain_Toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle(null);
        toolbar.setLogo(R.mipmap.uploadpost);
        toolbar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent settingsIntent = new Intent(ReviewMainActivity.this, ReviewPostUploadActivity.class);
                startActivity(settingsIntent);
            }
        });

        if (getSupportActionBar()!=null){
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }

        MobileAds.initialize(this,APP_ID);
        AdView adView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
        database = FirebaseDatabase.getInstance();
        MCR = database.getReference("Review");

        recyclerView = (RecyclerView)findViewById(R.id.recycler_ReviewMain);
        recyclerView.setHasFixedSize(true);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setReverseLayout(true);
        layoutManager.setStackFromEnd(true);
        recyclerView.setLayoutManager (layoutManager);

        loadMenu();
    }

    private void loadMenu() {
        adapter = new FirebaseRecyclerAdapter<ReviewModel, ReviewViewHolder>(ReviewModel.class,
                R.layout.review_main_items,
                ReviewViewHolder.class,MCR) {
            @Override
            protected void populateViewHolder(ReviewViewHolder viewHolder, ReviewModel model, final int position) {
                viewHolder.Review_Title.setText(model.getTitle());
                viewHolder.Profile_Name.setText(model.getProfileName());

                Picasso.with(getBaseContext()).load(model.getImage())
                        .into(viewHolder.Review_Image);

                Picasso.with(getBaseContext()).load(model.getProfileimage())
                        .into(viewHolder.Profile_Image);

                final ReviewModel local = model;

                viewHolder.Share_Icon.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                    }
                });
            }
        };
        recyclerView.setAdapter(adapter);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId()==android.R.id.home)
            finish();
        return super.onOptionsItemSelected(item);
    }
}

Это моя намеренная часть

Intent shareIntent;
Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+"/Share.png";
OutputStream out = null;
File file=new File(path);
try {
    out = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
    out.flush();
    out.close();
} catch (Exception e) {
    e.printStackTrace();
}
path=file.getPath();
Uri bmpUri = Uri.parse("file://"+path);
shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
shareIntent.putExtra(Intent.EXTRA_TEXT,"Hey please check this application " + "https://play.google.com/store/apps/details?id=" +getPackageName());
shareIntent.setType("image/png");
startActivity(Intent.createChooser(shareIntent,"Share with"));

1 ответ

Ты можешь попробовать

Intent uriIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("whatsapp://send?text=" + "Text you want to share"));
startActivity(uriIntent);

Это откроет WhatsApp и попросит вас людей, которым вы хотите отправить введенный текст.

Чтобы отправить файл, сделайте это

  File outputFile = new File(Environment.getExternalStoragePublicDirectory
(Environment.DIRECTORY_DOWNLOADS), "example.pdf");
Uri uri = Uri.fromFile(outputFile);

Intent share = new Intent();
share.setAction(Intent.ACTION_SEND);
share.setType("application/pdf");
share.putExtra(Intent.EXTRA_STREAM, uri);
share.setPackage("com.whatsapp");

activity.startActivity(share);      

Приведенный выше код будет отправлять файлы PDF.

Чтобы отправить изображение (одно изображение), замените "application/pdf" на "image/*"

Помните: приложение будет зависать, если вы попытаетесь отправить текст, PDF и изображение одновременно, поэтому отправляйте только один элемент за раз.

Другие вопросы по тегам