Я использую поставщика контента KITKAT в своем приложении. После получения uri выбранного изображения я храню его в базе данных, чтобы использовать его позже. Проблема в том, что после перезагрузки телефона у меня возникло исключение для разрешения при использовании сохраненного uri.android takePersistableUriPermission не компилируется
После поиска я попытался использовать takePersistableUriPermission() Но по какой-то причине он не компилируется (я использую androidstudio).
Ошибка: должна быть одна или несколько из IntentFLAG_GRANT_READ_URI_PERMISSION или Intent.FLAG_GRANT_WRITE_URI_PERMISSION. Это происходит на второй аргумент метода takePersistableUriPermission (флаг)
Вот код:
Intent intent;
if (Build.VERSION.SDK_INT < 19){
intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, ANDROID_LESS_19);
} else {
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, ANDROID_MORE_19);
}`
case ANDROID_MORE_19:
if(resultCode == RESULT_OK){
Uri selectedImage = data.getData();
mImage = selectedImage.toString();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
// this part means to keep permanent permissions, so no exception after rebooting the device
final int takeFlags = data.getFlags()
& (Intent.FLAG_GRANT_READ_URI_PERMISSION
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getContentResolver().takePersistableUriPermission(selectedImage, takeFlags);
grantUriPermission("com.main.bonappetit", selectedImage, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
Cursor cursor = getContentResolver().query(
selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
Кто-то знает, что здесь не так?
Используйте побитового OR вместо AND, чтобы объединить дополнительные флаги. – corsair992
Благодарим вас за ответ. Я попытался заменить его, но у меня все еще такая же ошибка. – totomac
Я, наконец, смог скомпилировать его, используя eclipse вместо androidstudio. – totomac