2016-06-23 36 views
1

我正在使用存儲訪問框架獲取sd卡上的寫入權限(API> = 21)。takePersistableUriPermission()(SAF)上的java.lang.SecurityException

它可以在大多數設備上正常工作,但有些像Galaxy S7(Edge,API 23)在調用takePersistableUriPermission()時會拋出SecurityException。

Caused by: java.lang.SecurityException: No persistable permission grants found for UID 10150 and Uri 0 @ content://com.android.externalstorage.documents/tree/70CD-6B92 

代碼:

//call the SAF 
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); 
         startActivityForResult(intent, Config.REQUEST_SAF); 

//Persist permissions 
int flags = resultData.getFlags(); 
flags &= (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 

this.getContentResolver().takePersistableUriPermission(treeUri, flags); //throws exception 

異常不能在所有S7設備發生。我已經在2個設備上成功測試了代碼,但是這個引發了SecurityException。

我可以添加一些標誌給SAF的調用嗎?

intent.addFlags(
Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION | 
Intent.FLAG_GRANT_READ_URI_PERMISSION | 
Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 

任何幫助表示讚賞。

+0

你有沒有解決這個問題? –

+0

還沒有。似乎沒有人知道它來自哪裏。 – Farasy

回答

0

嘗試添加該flag

intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION); 
+0

謝謝。試過但沒有運氣與此。 – Farasy

相關問題