Если вам нужно отложить начальный запуск 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);