提问人:R AM 提问时间:10/16/2023 最后编辑:R AM 更新时间:10/19/2023 访问量:50
在 android 中共享文件时媒体不可用
Media unavailable while sharing a file in android
问:
我正在实现一个共享已安装应用程序 apk 文件的 android 应用程序。 都很好;但是在共享时,我收到了有关“媒体不可用”的错误。 我该如何解决?
老实说,我正在尝试从 SoutceDir 和我的应用程序数据文件夹(storage/emulated/ 0/Android/data/com.example.myAppName)共享。
请帮帮我!🙏
我的代码在打击:
private void shareApk() {
ArrayList<Uri> pickedAppsUri = new ArrayList<Uri>();
// Preparing cache folder
// Deleting older files
for(File f : getExternalCacheDir().listFiles()){
f.delete();
}
// Make a copy from selected apps apk files into cache folder
for (int i = 0; i < apkPackageInfoList.size(); i++) {
if (checkMarksVisibilityState.get(i)) {
String apkFileName = getPackageManager().getApplicationLabel(apkPackageInfoList.get(i).applicationInfo) + "";
File apkTmpFile = new File(getExternalCacheDir(), apkFileName+".apk");
try {
InputStream inStream = new FileInputStream(new File(apkPackageInfoList.get(i).applicationInfo.sourceDir));
OutputStream outTemp = new FileOutputStream(apkTmpFile);
OutputStreamWriter writerTmp = new OutputStreamWriter(outTemp);
writerTmp.write(inStream.read());
outTemp.flush();
outTemp.close();
writerTmp.close();
} catch (FileNotFoundException | IOException e) {}
pickedAppsUri.add(Uri.parse(apkTmpFile.getPath()));
}
}
// Create share intent
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setType("*/*");
if (pickedAppsUri.size() == 1) {
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, pickedAppsUri.get(0));
} else {
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.putExtra(Intent.EXTRA_STREAM, pickedAppsUri);
}
for(ResolveInfo ri : getPackageManager().queryIntentActivities(intent,0)){
for(Uri uri : pickedAppsUri){
grantUriPermission(ri.activityInfo.packageName, uri, 1);
}
}
startActivity(Intent.createChooser(intent, "Share via:"));
}
我想我无法访问 sourceDir,因为 Android/data/com.example.shareApk/cache 文件夹中复制的文件是空的(0 字节文件)
答: 暂无答案
评论
InternalStorage/Android/data/com.example.myAppName
InternalStorage