小编tot*_*mac的帖子

android takePersistableUriPermission不编译

我在我的应用程序中使用KITKAT内容提供程序.在获得所选图片的uri之后,我将其存储在数据库中以便稍后再次使用它.问题是重启手机后,我在使用存储的uri时获得了权限异常.

搜索后我尝试使用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 = …
Run Code Online (Sandbox Code Playgroud)

android android-studio

7
推荐指数
1
解决办法
2064
查看次数

标签 统计

android ×1

android-studio ×1