SecurityException: отказ в разрешении: открытие поставщика org.chromium.chrome.browser.util.ChromeFileProvider из ProcessRecord - PullRequest
0 голосов
/ 04 июля 2018

Я создаю приложение Chooser, которое заменяет собственный диалог Android Share. Он работает нормально, за исключением случаев, когда я пытаюсь поделиться изображением из Chrome через longpress image> поделиться изображением.

Если я попытаюсь сделать: Галерея Фокуса (Франко)> Поделиться (Мое приложение)> Google+> Нет проблем. Chrome> Поделиться (My App)> Crash.

Как только я пытаюсь получить доступ к содержимому: // uri, которое передается в мое приложение как EXTRA_STREAM, я получаю сообщение об ошибке:

java.lang.SecurityException: Отказ в разрешении: открытие провайдера org.chromium.chrome.browser.util.ChromeFileProvider from ProcessRecord {9a9ad72 13494: com.rejh.sharedr / u0a226} (pid = 13494, uid = 10226), который не экспортируется из UID 10101

Содержание URI выглядит так:

Содержание: //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 ()). Как ни странно, 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 привел к аналогичным ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...