使用Cache使用whatsapp通过意图共享图像和文本

时间:2017-02-08 20:30:55

标签: android android-intent whatsapp social android-fileprovider

为了避免让您感到头疼,以下是将此功能添加到您应用中的方法。

1 个答案:

答案 0 :(得分:-2)

我遇到了这个问题的问题,找到解决方案花了我几个小时但是后续工作应该有效。 (您需要开源 Picasso 库)

您的活动中的代码

Picasso.with(context)
.load("http://...")
  .into(new Target() {
          @Override
           public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                  try {

                      File myDir = new File(getCacheDir() + "/pictureToShare.jpg");
                      FileOutputStream out = new FileOutputStream(myDir);
                      bitmap.compress(Bitmap.CompressFormat.JPEG, 80, out);

                      out.flush();
                      out.close();



                      } catch(Exception e){
                       // some action
                                          }
            }

@Override
public void onBitmapFailed(Drawable errorDrawable) {
     }

@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
     }
                    }


);



File requestFile = new File(getCacheDir() + "/pictureToShare.jpg");

Uri imageUri = FileProvider.getUriForFile(YourActivity.this,
        getPackageName() + ".share", requestFile );


      Intent share = new Intent(Intent.ACTION_SEND);
      share.setPackage("com.whatsapp");
      share.setType("image/jpg");
      share.putExtra(Intent.EXTRA_TEXT,"Your text");  //to share text
      share.putExtra(Intent.EXTRA_STREAM, imageUri);          //to share image
      share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
      try {
      startActivity(share);
       } catch (android.content.ActivityNotFoundException ex) {
       startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.whatsapp")));
       }

在AndroidManifest.xml中插入此代码

<provider
 android:name="android.support.v4.content.FileProvider"
 android:authorities="${applicationId}.share"
 android:exported="false"
 android:grantUriPermissions="true">
    <meta-data
         android:name="android.support.FILE_PROVIDER_PATHS"
         android:resource="@xml/provider_paths"/>
 </provider>

创建一个名为&#34; xml&#34;的文件夹在你的&#34; res&#34;在文件夹中有一个名为&#34; provider_paths&#34;的xml-resource-file; 在provider_paths.xml中写下以下行

<paths>
   <cache-path name="name" path="." />
</paths>