Soru Whatsapp veya Facebook üzerinden görüntü ve metin paylaşın


Uygulamamda bir paylaşım düğmesi var ve bir resmi ve metni aynı anda paylaşmak istiyorum. GMail'de gayet iyi çalışıyor ancak WhatsApp'da sadece görüntü gönderiliyor ve Facebook'ta uygulama çöküyor.

Paylaşmak için kullandığım kod şudur:

Intent shareIntent = new Intent(Intent.ACTION_SEND);  
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Message");         

Uri uri = Uri.parse("android.resource://" + getPackageName() + "/drawable/ford_focus_2014");
     try {
        InputStream stream = getContentResolver().openInputStream(uri);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

shareIntent.putExtra(Intent.EXTRA_STREAM, uri);

"ShareIntent.setType (" * / * ") kullanırsam" Facebook ve WhatsApp çöküyor.

Bunu yapmanın bir yolu var mı? Belki aynı anda iki mesaj gönderir (WhatsApp).

Şimdiden teşekkürler.


17
2018-04-15 07:36


Menşei


olası kopyası Android Niyet kullanarak metin ve resimler veya herhangi bir nesne nasıl gönderilir? - Shabbir Dhangot
Bu bağlantıda bunun hakkında birçok örnek var github.com/codepath/android_guides/wiki/... - Charleston


Cevaplar:


WhatsApp, resim ve metin içeren mesajları desteklemediği için bu mümkün değildir. Bir mesaj, tek bir görüntü, metin dizisi, ses dosyası, kişi veya videodan oluşabilir. Bunlardan herhangi birinin bir bileşimi olamaz.

Metnini kullanarak paylaşabilirsiniz

    Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
    whatsappIntent.setType("text/plain");
    whatsappIntent.setPackage("com.whatsapp");
    whatsappIntent.putExtra(Intent.EXTRA_TEXT, "The text you wanted to share");
    try {
        activity.startActivity(whatsappIntent);
    } catch (android.content.ActivityNotFoundException ex) {
        ToastHelper.MakeShortText("Whatsapp have not been installed.");
    }

15
2018-04-15 07:48



Teşekkürler, ben sadece o zaman resmi göndereceğim :( - user2802764
Yardım etmek için mutlu .... @ user2802764 - Shani Goriwal
Aşağıdaki cevabı kontrol edin, hem paylaşmayı mümkün kılar. - Darpan
@ShaniGoriwal Verileri paylaşabileceğimiz uygulamaların özel bir listesini görüntüleyin, ancak verileri nasıl kullanarak paylaşabilirim? getLaunchIntentForPackage(String pckg)? - Devendra Singh
Intent.EXTRA_STREAM, imageUri geçerek gönderilebilir - Prasanna Anbu


Şu anda Whatsapp, Resim ve Metin paylaşımını aynı anda desteklemektedir. (Kasım 2014).

İşte bunun nasıl yapılacağına dair bir örnek:

    /**
     * Show share dialog BOTH image and text
     */
    Uri imageUri = Uri.parse(pictureFile.getAbsolutePath());
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    //Target whatsapp:
    shareIntent.setPackage("com.whatsapp");
    //Add text and then Image URI
    shareIntent.putExtra(Intent.EXTRA_TEXT, picture_text);
    shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
    shareIntent.setType("image/jpeg");
    shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    try {
        startActivity(shareIntent);
    } catch (android.content.ActivityNotFoundException ex) {
        ToastHelper.MakeShortText("Whatsapp have not been installed.");
    }

27
2017-11-06 12:52



Deneyen var mı? - Erhan H.
Denedim. Artık çalışmıyor). - Lord Flash
çekicilik gibi çalışır .. :) teşekkürler - Muhammad Sufiyan
Çalışmalar :) Teşekkürler - roeiba
ve metin ile video için? - yarin


Şu an itibariyle, bir Whatsapp Intent görüntü ve metni destekler:

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT,title + "\n\nLink : " + link );
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(sharePath));
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share image via:"));

Görüntü olduğu gibi olacak ve EXTRA_TEXT başlık olarak gösterilecektir.


1
2017-11-17 11:44



Ya da çalışmıyor. - Lord Flash
Şubat 2016'dan itibaren çalışıyor - Akhil Sekharan
Kaydedilmemiş kişiyle paylaşmak istersek ne olur? mümkün mü? - gumuruh


* Bunu dene.

Uri imageUri = Uri.parse(Filepath);
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.setPackage("com.whatsapp");
    shareIntent.putExtra(Intent.EXTRA_TEXT, "My sample image text");
    shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
    shareIntent.setType("image/jpeg");
    shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    try {
        startActivity(shareIntent);
    } catch (android.content.ActivityNotFoundException ex) {
        ToastHelper.MakeShortText("Kindly install whatsapp first");
    }*

1
2018-06-30 03:40



Bazı acil yardımlar sağlayabilen bu kod snippet'i için teşekkür ederiz. Uygun bir açıklama büyük ölçüde geliştirir göstererek eğitim değeri niye ya Bu, problem için iyi bir çözümdür ve benzer fakat aynı olmayan soruları olan gelecekteki okuyuculara daha yararlı olacaktır. Lütfen Düzenle cevabınızı açıklama eklemek ve hangi sınırlama ve varsayımların geçerli olduğuna dair bir gösterge vermek. - Toby Speight


Paylaşmak için Metin ve görüntü üzerinde Naberkodun daha kontrollü sürümü aşağıdadır, paylaşım için daha fazla yöntem ekleyebilirsiniz. heyecan, Facebook ...

public class IntentShareHelper {

    public static void shareOnWhatsapp(AppCompatActivity appCompatActivity, String textBody, Uri fileUri) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.setPackage("com.whatsapp");
        intent.putExtra(Intent.EXTRA_TEXT,!TextUtils.isEmpty(textBody) ? textBody : "");

        if (fileUri != null) {
            intent.putExtra(Intent.EXTRA_STREAM, fileUri);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.setType("image/*");
        }

        try {
            appCompatActivity.startActivity(intent);
        } catch (android.content.ActivityNotFoundException ex) {
            ex.printStackTrace();
            showWarningDialog(appCompatActivity, appCompatActivity.getString(R.string.error_activity_not_found));
        }
    }

    public static void shareOnTwitter(AppCompatActivity appCompatActivity, String textBody, Uri fileUri){...}

    private static void showWarningDialog(Context context, String message) {
        new AlertDialog.Builder(context)
                .setMessage(message)
                .setNegativeButton(context.getString(R.string.close), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                })
                .setCancelable(true)
                .create().show();
    }
}

Almak için Uri File'dan aşağıdaki sınıfı kullanın:

public class UtilityFile {
    public static @Nullable Uri getUriFromFile(Context context, @Nullable File file) {
        if (file == null)
            return null;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            try {
                return FileProvider.getUriForFile(context, "com.my.package.fileprovider", file);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        } else {
            return Uri.fromFile(file);
        }
    }

    // Returns the URI path to the Bitmap displayed in specified ImageView       
    public static Uri getLocalBitmapUri(Context context, ImageView imageView) {
        Drawable drawable = imageView.getDrawable();
        Bitmap bmp = null;
        if (drawable instanceof BitmapDrawable) {
            bmp = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
        } else {
            return null;
        }
        // Store image to default external storage directory
        Uri bmpUri = null;
        try {
            // Use methods on Context to access package-specific directories on external storage.
            // This way, you don't need to request external read/write permission.
            File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png");
            FileOutputStream out = new FileOutputStream(file);
            bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
            out.close();

            bmpUri = getUriFromFile(context, file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return bmpUri;
    }    
}

Yazmak için FileProvider, bu bağlantıyı kullanın: https://github.com/codepath/android_guides/wiki/Sharing-Content-with-Intents


1
2018-02-24 09:37





public void shareIntentSpecificApps(String articleName, String articleContent, String imageURL) {
    List<Intent> intentShareList = new ArrayList<Intent>();
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    //shareIntent.setType("image/*");
    List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities(shareIntent, 0);

    for (ResolveInfo resInfo : resolveInfoList) {
        String packageName = resInfo.activityInfo.packageName;
        String name = resInfo.activityInfo.name;
        Log.d("System Out", "Package Name : " + packageName);
        Log.d("System Out", "Name : " + name);

        if (packageName.contains("com.facebook") ||
                packageName.contains("com.whatsapp")) {


            Intent intent = new Intent();
            intent.setComponent(new ComponentName(packageName, name));
            intent.setAction(Intent.ACTION_SEND);
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_SUBJECT, articleName);
            intent.putExtra(Intent.EXTRA_TEXT, articleName + "\n" + articleContent);
            Drawable dr = ivArticleImage.getDrawable();
            Bitmap bmp = ((GlideBitmapDrawable) dr.getCurrent()).getBitmap();
            intent.putExtra(Intent.EXTRA_STREAM, getLocalBitmapUri(bmp));
            intent.setType("image/*");
            shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intentShareList.add(intent);
        }
    }

    if (intentShareList.isEmpty()) {
        Toast.makeText(ArticleDetailsActivity.this, "No apps to share !", Toast.LENGTH_SHORT).show();
    } else {
        Intent chooserIntent = Intent.createChooser(intentShareList.remove(0), "Share Articles");
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentShareList.toArray(new Parcelable[]{}));
        startActivity(chooserIntent);
    }
}

Ben de yukarıdaki kodda belirtildiği gibi benim app yaptım görüntüyü paylaşabilirsiniz.


0
2018-04-23 23:27





Bu soru için ikinci cevabım şudur: Yeni kod geliştiricinin bazen tam kod gerektirmesi nedeniyle buraya tam kod yapıştırıyorum.

public class ImageSharer extends AppCompatActivity {
    private ImageView imgView;
    private Button shareBtn;
    FirebaseStorage fs;
    StorageReference sr,sr1;
    String Img_name;
    File dir1;
    Uri uri1;



    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.app_sharer);
        imgView = (ImageView) findViewById(R.id.imgView);
        shareBtn = (Button) findViewById(R.id.shareBtn);

        // Initilize firebasestorage instance
        fs=FirebaseStorage.getInstance();
        sr=fs.getReference();
        Img_name="10.jpg";
        sr1=sr.child("shiva/"+Img_name);
        final String Paths= Environment.getExternalStorageDirectory()+ File.separator+"The_Bhakti"+File.separator+"Data";
dir1=new File(Paths);
if(!dir1.isDirectory())
{
    dir1.mkdirs();
}
   sr1.getFile(new File(dir1,Img_name)).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
       @Override
       public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
           sr1.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
               @Override
               public void onSuccess(Uri uri) {
                   uri1= Uri.parse(uri.toString());
               }
           });

       }
   }) ;

        shareBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                uri1=Uri.parse(Paths+File.separator+Img_name);
                Intent intent=new Intent(Intent.ACTION_SEND);
                intent.setType("image/*");
                //intent.putExtra(intent.EXTRA_SUBJECT,"Insert Something new");
                String data = "Hello";
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                intent.putExtra(Intent.EXTRA_TEXT,data);
                intent.putExtra(Intent.EXTRA_STREAM,uri1);
                intent.setPackage("com.whatsapp");
                // for particular choose we will set getPackage()
                /*startActivity(intent.createChooser(intent,"Share Via"));*/// this code use for universal sharing
                startActivity(intent);

                // end Share code
            }
        });

    }// onCreate closer
}

0
2017-08-28 10:06