Content Resolver Попробуйте записать файл, но не можете получить Permisions - PullRequest
0 голосов
/ 05 декабря 2018

Мой поставщик контента пытается создать файл на внешнем хранилище, но ему необходимо разрешение android.permission.WRITE_EXTERNAL_STORAGE

.Я уже добавил это разрешение в Манифест, но если Build.VERSION.SDK_INT >= 23 Его невозможно создать файл.

Итак, я хочу запустить действие до того, как ContentProvider начнет работать, чтобы получить разрешение от пользователя.Как мне это сделать.Спасибо.

ПРИМЕЧАНИЕ: я не спрашиваю, как я могу получить разрешения во время выполнения.Как я могу получить разрешения ДО запуска поставщика контента.Как вы знаете, контент-провайдер начинает работать раньше, чем все остальные действия, и я не могу дозвониться до ContextCompat..

1 Ответ

0 голосов
/ 06 декабря 2018

Если вам нужно отложить начальный запуск ContentProvider - например, до тех пор, пока вашему приложению не будут предоставлены определенные запросы разрешений во время выполнения, как в этом случае - вы можете объявить его отключенным в манифесте, а затем программно включить егопри необходимости.

Просто установите атрибут enabled для элемента <provider> в манифесте на false:

<provider
    android:name=".MyProvider"
    ...
    android:enabled="false" />

Затем используйте PackageManager#setComponentEnabledSetting(), чтобы включить его, когда будете готовы;т.е. после того, как вы успешно получили разрешение, в этом случае.Например, из Activity, обрабатывающего запрос разрешений во время выполнения:

ComponentName myProvider = new ComponentName(this, MyProvider.class);
getPackageManager().setComponentEnabledSetting(myProvider, 
    PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
...