相关疑难解决方法(0)

如何在android API 19(KitKat)中保留权限?

在我的应用程序中,我将图像路径存储在我的SQlite数据库中以供进一步使用.我得到的路径是

content://com.android.providers.media.documents/document/image%3A71964
Run Code Online (Sandbox Code Playgroud)

当我从数据库中检索此路径并尝试从该路径中检索图像时,机器人抛出

java.lang.SecurityException: Permission Denial: opening provider
com.android.providers.media.MediaDocumentsProvider 
from ProcessRecord{42c84ec8 23911:com.gots.gb/u0a248} (pid=23911, uid=10248) 
requires android.permission.MANAGE_DOCUMENTS or android.permission.MANAGE_DOCUMENTS
Run Code Online (Sandbox Code Playgroud)

根据https://developer.android.com/guide/topics/providers/document-provider.html#permissions我需要通过添加以下代码来保留权限

final int takeFlags = intent.getFlags()
        & (Intent.FLAG_GRANT_READ_URI_PERMISSION
        | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// Check for the freshest data.
getContentResolver().takePersistableUriPermission(uri, takeFlags);
Run Code Online (Sandbox Code Playgroud)

当我将此代码添加到我的ImageAdapter类时,它扩展了BaseAdapter android抛出

08-21 02:14:38.530: W/System.err(24452): java.lang.SecurityException:
No permission grant found for UID 10248 and Uri 
content://com.android.providers.media.documents/document/image:71964
Run Code Online (Sandbox Code Playgroud)

这是我的ImageAdapter代码的相关部分

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView ;


    if (convertView == null){
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(185, 185));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(8, …
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-4.4-kitkat storage-access-framework

16
推荐指数
1
解决办法
1万
查看次数