FTL*_*lph 9 android file-permissions android-manifest android-permissions
编辑:这不是重复的问题。毫无疑问,当您无法控制发送意图的活动时(在我的情况下,浏览器应用程序或文件浏览应用程序正在将意图发送到我的应用程序),我已经看到了如何解决此问题的答案。更具体地说,这不是处理照片/画廊。
这已经困扰我的一个应用程序有一段时间了。我个人无法在任何设备上发生这种情况,但我可以从崩溃中看到这种情况在其他设备上经常发生。
我的应用程序从外部应用程序接收包含 ZIP 文件的意图。onCreate()我在or中捕获它onNewIntent():
Intent intent = getIntent();
if (intent != null && intent.getData() != null)
beginZipIntent(intent);
Run Code Online (Sandbox Code Playgroud)
在beginZipIntent():
Uri data = intent.getData();
String filename = data.toString();
// Open input stream to copy ZIP to a temporary directory.
Uri uri = Uri.parse(filename);
InputStream inputStream = null;
try
{
inputStream = getContentResolver().openInputStream(uri); // This fails
}
catch (Exception e)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
在上面的行中,某些设备出现故障:
Permission Denial: reading com.android.providers.downloads.DownloadStorageProvider uri content://com.android.providers.downloads.documents/document/2772 from pid=26094, uid=10094 requires android.permission.MANAGE_DOCUMENTS, or grantUriPermission()
Run Code Online (Sandbox Code Playgroud)
我无法控制发送意图的应用程序/活动。我认为通过立即抓取文件并将其保存到临时目录中我可以解决这个问题(如其他答案中所示) - 但没有。
我也添加了android.permission.MANAGE_DOCUMENTS,但正如预期的那样(来自其他答案)它不起作用。
有人遇到过这个吗?似乎会影响从 Android 4 到 7 的设备,因此不特定于某一操作系统版本。
您可能还需要在代码和清单中添加以下运行时权限
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
你可以参考这个链接#save_zip_files
我希望它有帮助!