2016-06-23 11 views
1

Я использую платформу доступа к хранилищу, чтобы получить доступ на запись на SD-карте (API> = 21).java.lang.SecurityException on takePersistableUriPermission() (SAF)

Он отлично работает на большинстве устройств, но некоторые, подобные Galaxy S7 (Edge, API 23), вызывают исключение SecurityException при вызове метода takePersistableUriPermission().

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. Я успешно протестировал код на двух устройствах, но этот код вызывает 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

Смежные вопросы