【发布时间】:2014-07-22 14:42:53
【问题描述】:
在我的应用中,用户可以导入声音、视频、图像和其他文件。 导入使用标准 Intent 完成,结果在 OnActivityResult 中提交
在我的 4.2.2 平板电脑上尝试从 Google Drive 导入文件时遇到安全异常,来自 Dropbox、Onedrive、Gallery 等其他来源的文件都可以正常工作。 从云端硬盘导入在我的 4.4 平板电脑上运行良好。
intent 代码如下所示:
Intent intent = new Intent();
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, getString(R.string.title_dialog_selectphoto)), SELECT_PICTURE_REQUEST);
然后在我的 importPhotoFromUri(uri) 方法中,我尝试将 uri 作为 inputStream 打开:
...
InputStream is;
try {
is = getContentResolver().openInputStream(uri);
....
此时我得到一个安全异常:
java.lang.SecurityException: Permission Denial: opening provider
com.google.android.apps.docs.sync.filemanager.FileProvider
from ProcessRecord{216d9060 18832:com.app.app/u0a10153}
(pid=18832, uid=10153) that is not exported from uid 10179
我发现一些帖子似乎提到了不久前的类似问题:
Google Drive + ACTION_GET_CONTENT
File View from Google Drive Android Intent
https://productforums.google.com/forum/#!topic/drive/siSKHXdE-ao/discussion
但这些似乎都没有解决方案,除了可能自己使用他们的 API 重新实现 Google Drive Integration。我宁愿避免这种情况并保持简单的用户体验。
从我的 Google Analytics(分析)中的异常跟踪来看,这个问题似乎主要影响运行 4.2.2 设备的用户,我只看到其他 Android 版本的 3 个安全异常。 在 5 月 9 日(2014 年)之前,我也几乎没有看到任何安全异常,这也是用户 igorcard 发表评论询问有关此答案的相同异常的日期: https://stackoverflow.com/a/18298298/2214992
我的 4.2.2 设备上的 Google Drive 应用的最后一次更新是在 5 月 8 日
通过尝试从我的云端硬盘加载图像,我也能够在其他应用中观察到同样的问题,而不仅仅是在我自己的应用中。
然后我的问题是,我能否以另一种方式实现驱动器集成,而不会显着改变用户体验,还是我只需要处理异常并设置一个道歉的警报对话框? 此外,最近对 Drive 应用程序的更新是否打破了这一点,或者 Drive 更新的时间和我的分析中此异常的发生只是巧合?
【问题讨论】:
-
看起来这只是 版本 1.3.144.17 的错误。他们似乎已在 2014 年 6 月 18 日发布的最新版本 1.3.222.29 中修复了它(可能是明显的更改)。
-
是的,我也看到了同样的情况。至少这两周我学到了很多关于 Drive SDK 的知识
标签: android