Shy*_*man 4 android share image whatsapp
我有资产文件夹中的图像,需要与whatsapp应用程序共享
我试过这个代码,它一直让我分享失败再试一次!怎么了 ?!
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
share.setPackage("com.whatsapp");
// share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("file:///assets/epic/adv.png")));
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///assets/epic/adv.png"));
this.startActivity(Intent.createChooser(share, "share_via"));
Run Code Online (Sandbox Code Playgroud)
Shy*_*man 10
这个通过whatsapp共享图像的代码对我来说很好.
public void shareImageWhatsApp() {
Bitmap adv = BitmapFactory.decodeResource(getResources(), R.drawable.adv);
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
adv.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File f = new File(Environment.getExternalStorageDirectory()
+ File.separator + "temporary_file.jpg");
try {
f.createNewFile();
new FileOutputStream(f).write(bytes.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
share.putExtra(Intent.EXTRA_STREAM,
Uri.parse( Environment.getExternalStorageDirectory()+ File.separator+"temporary_file.jpg"));
if(isPackageInstalled("com.whatsapp",this)){
share.setPackage("com.whatsapp");
startActivity(Intent.createChooser(share, "Share Image"));
}else{
Toast.makeText(getApplicationContext(), "Please Install Whatsapp", Toast.LENGTH_LONG).show();
}
}
private boolean isPackageInstalled(String packagename, Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;
} catch (NameNotFoundException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
你有几个问题.
首先,在任何版本的Android上file:///assets/都不是有效Uri的.您自己的应用程序可以通过引用自己的资产file:///android_asset/.
其次,只有您可以访问自己的资产file:///android_asset/- 您无法将此类内容传递Uri给第三方应用.将文件从资产复制到内部存储和使用FileProvider,或者您可以尝试我StreamProvider并尝试直接共享数据assets/.
第三,不保证com.whatsapp设备上存在,或者com.whatsapp支持MIME类型为ACTION_SEND的file:/// Uri值image/*,因此您可能会崩溃ActivityNotFoundException.
第四,用户可能希望通过除WhatsApp之外的其他方式来共享此图像.请允许用户通过删除setPackage()您的呼叫来分享用户想要的位置Intent.
| 归档时间: |
|
| 查看次数: |
12673 次 |
| 最近记录: |