要与其他应用共享图像和文本,我做到了:
File path = getExternalFilesDir(Environment.DIRECTORY_PICTURES+"eVendeur");
if (!path.exists()){
path.mkdir();
}
File root = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File cachePath = new File(root.getAbsolutePath()+"/eVendeur/"+id_produit+".jpg");
try {
cachePath.createNewFile();
FileOutputStream outputStream = new FileOutputStream(cachePath);
myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("*/*");
share.putExtra(Intent.EXTRA_TEXT, "my text");
if(Build.VERSION.SDK_INT>=24){
try{
Method m = StrictMode.class.getMethod("disableDeathOnFileUriExposure");
m.invoke(null);
}catch(Exception e){
e.printStackTrace();
}
}
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(cachePath));
view.getContext().startActivity(Intent.createChooser(share, "Share:"));
它可以工作,但是在某些设备上,我得到了:
java.io.IOException:没有这样的文件或目录。...
我应该在代码中进行哪些更改才能使其正常工作?
预先感谢
答案 0 :(得分:0)
使用getExternalFilesDir代替getExternalStoragePublicDirectory
#include <stdio.h>
int main ()
{
int *b;
printf ("Enter some int value -> ");
scanf ("%d", b);
printf ("Entered value is: %d", *b);
return 0;
}
有关更多详细信息,请访问Docs
答案 1 :(得分:0)
如果您得到:
FileUriExposedException: file:///storage/emulated/0/Android/data/com.e_vendeur/files/Pictures/eVendeur/-LqzYHtp3h-1qbHU6PK_.jpg通过ClipData.Item.getUri()暴露在应用程序之外
然后在调用intent之前添加它:
if(Build.VERSION.SDK_INT>=24){
try{
Method m = StrictMode.class.getMethod("disableDeathOnFileUriExposure");
m.invoke(null);
}catch(Exception e){
e.printStackTrace();
}
}