我正在构建一个Chooser应用程序,该应用程序将替换本机的Android Share对话框。效果很好,除非我尝试通过长按图像>共享图像从Chrome共享图像。
如果我尝试这样做: Focus Gallery(由Franco提供)>共享(我的应用程序)> Google+>没问题。 Chrome>共享(我的应用程序)>崩溃。
当我尝试访问作为EXTRA_STREAM传递到我的应用程序的content:// uri时,我得到一个错误:
java.lang.SecurityException:权限拒绝:打开提供程序 来自的org.chromium.chrome.browser.util.ChromeFileProvider ProcessRecord {9a9ad72 13494:com.rejh.sharedr / u0a226}(pid = 13494, uid = 10226)不是从UID 10101导出的
内容uri看起来像这样:
content://com.android.chrome.FileProvider/images/screenshot/15307085865714015389178311011200.jpg
这是我的工作(简体):
@override
public void onCreate() {
handleIntent();
@override
public void onNewIntent() {
handleIntent();
}
public void handleIntent() {
Parcelable parcel = getIntent().getParcelableExtra(Intent.EXTRA_INTENT);
payloadIntent = new Intent((Intent) parcel);
Uri extraStreamUri = (Uri) payloadIntent.getExtras().get(Intent.EXTRA_STREAM);
ContentResolver contentResolver = getContentResolver();
String fileMimeType = contentResolver.getType(extraStreamUri);
Cursor returnCursor = contentResolver.query(extraStreamUri, null, null, null, null);
}
我在最后一行(contentResolver.query(query))收到错误。足够奇怪的是,getType()确实可以工作。
活动的清单声明
<activity
android:name=".ActShareReplace"
android:label="Sharedr"
android:theme="@style/AppTheme.TransparentActivity"
>
<intent-filter>
<action android:name="android.intent.action.CHOOSER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
据我所知,我仍然应该可以访问URI,因为我尝试从接收该意图的同一活动中访问它。
顺便说一句,Chrome是迄今为止我遇到的唯一应用程序。用户确实报告说从Whatsapp共享图像会导致类似错误。