本文介紹了內容解析程序嘗試寫入文件,但無法獲取權限的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我的內容提供商嘗試在外部存儲上創建文件,但它需要android.permission.WRITE_EXTERNAL_STORAGE
權限。我已將此權限添加到清單,但如果Build.VERSION.SDK_INT >= 23
它無法創建文件。
因此,我希望在ContentProvider開始工作之前運行一個活動,以獲得用戶的許可。我怎么能做到這一點。謝謝。
注意:我不是在問如何獲得運行時權限。如何在運行內容提供程序之前獲得許可。如您所知,內容提供商在所有其他活動之前開始工作,我無法聯系到ContextCompat..
推薦答案
如果你需要推遲ContentProvider
的初始運行-例如,直到你的應用被授予某些運行時權限請求,如本例-你可以在清單中將其聲明為禁用,然后在適當的時候以編程方式啟用它。
只需將清單中第一個<provider>
元素的enabled
屬性設置為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);
這篇關于內容解析程序嘗試寫入文件,但無法獲取權限的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,