Я использую платформу доступа к хранилищу, чтобы получить доступ на запись на 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);
Любая помощь приветствуется.
ли вы когда-нибудь решить эту проблему? –
Пока нет. Похоже, никто не знает, откуда он. – Farasy