2016-06-23 33 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

相关问题