权限拒绝:打开提供程序com.android.providers.media.MediaDocumentsProvider

权限拒绝:打开提供程序com.android.providers.media.MediaDocumentsProvider,第1张

概述我试图允许用户访问他的照片库以获取个人资料图片,并将该个人资料图片保存到SharedPreferences.我还有一个导航栏,可从SharedPreferences获取此图片我收到以下错误:java.lang.SecurityException:PermissionDenial:openingprovidercom.android.providers.media.MediaDocumen

我试图允许用户访问他的照片库以获取个人资料图片,并将该个人资料图片保存到SharedPreferences.我还有一个导航栏,可从SharedPreferences获取此图片

我收到以下错误:

java.lang.SecurityException: Permission Denial: opening provIDer com.androID.provIDers.media.MediadocumentsProvIDer from ProcessRecord{a601c1c 3379:com.example.anishdalal.finalapp/u0a60} (pID=3379, uID=10060) requires androID.permission.MANAGE_documentS or androID.permission.MANAGE_documentS

这是获取图片的代码:

主要活动

       ImageVIEw prof_pic = (ImageVIEw) header.findVIEwByID(R.ID.profPic);        pref = getSharedPreferences(Profile.pref_filename, 0);        String uri = pref.getString("target_uri", "");        TextVIEw tv_name = (TextVIEw) header.findVIEwByID(R.ID.tv_name);        String name = pref.getString("name", "");        if(!uri.equals("")) {            Uri urii = Uri.parse(uri);            try {                Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openinputStream(urii));                tv_name.setText(name);                prof_pic.setimageBitmap(bitmap);            } catch (fileNotFoundException e) {            }        }        else {            prof_pic.setimageResource(R.drawable.ic_androID_black_24dp);        }    }profile_pic.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                /*                Intent intent = new Intent(Intent.ACTION_PICK,                        androID.provIDer.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);                startActivityForResult(intent, 0);                */                Intent intent;                if (Build.VERSION.SDK_INT < 19) {                    intent = new Intent();                    intent.setAction(Intent.ACTION_GET_CONTENT);                    intent.setType("*/*");                    startActivityForResult(intent, KITKAT_VALUE);                } else {                    intent = new Intent(Intent.ACTION_OPEN_document);                    intent.addcategory(Intent.category_OPENABLE);                    intent.setType("*/*");                    startActivityForResult(intent, KITKAT_VALUE);                }            }        });@OverrIDe    public voID onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (requestCode == KITKAT_VALUE) {            if (resultCode == RESulT_OK) {                targetUri = data.getData();                //Bitmap bitmap;                try {                    bitmap = BitmapFactory.decodeStream(getActivity().getContentResolver().openinputStream(targetUri));                /*                SharedPreferences.Editor edit = pref.edit();                edit.putString("target_uri", targetUri.toString());                edit.apply();                */                    sTargetUri = targetUri.toString();                    profile_pic.setimageBitmap(bitmap);                } catch (fileNotFoundException e) {                    // Todo auto-generated catch block                    e.printstacktrace();                }            }        }    }

这是我的清单

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"    package="com.finalapp">    <uses-permission androID:name="androID.permission.READ_EXTERNAL_STORAGE" />    <uses-permission androID:name="androID.permission.MANAGE_documentS" />    <application        androID:allowBackup="true"        androID:icon="@mipmap/ic_launcher"        androID:label="@string/app_name"        androID:supportsRtl="true"        androID:theme="@style/Apptheme">        <activity            androID:name=".MainActivity"            androID:label="@string/app_name"            androID:theme="@style/Apptheme.NoActionbar">            <intent-filter>                <action androID:name="androID.intent.action.MAIN" />                <category androID:name="androID.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity androID:name=".JobVIEwActivity"></activity>    </application></manifest>

解决方法:

public static final int galLERY_INTENT_CALLED = 1;    public static final int galLERY_KITKAT_INTENT_CALLED = 2;if (Build.VERSION.SDK_INT <19){                    Intent intent = new Intent();                    intent.setType("*/*");                    intent.setAction(Intent.ACTION_GET_CONTENT);                    startActivityForResult(intent, galLERY_INTENT_CALLED);                } else {                    Intent intent = new Intent(Intent.ACTION_OPEN_document);                    intent.addcategory(Intent.category_OPENABLE);                    intent.setType("*/*");                    startActivityForResult(intent, galLERY_KITKAT_INTENT_CALLED);                }public voID onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);            if (resultCode == RESulT_OK) {                Uri originalUri = null;                if (Build.VERSION.SDK_INT < 19) {                    originalUri = data.getData();                } else {                    originalUri = data.getData();                    final int takeFlags = data.getFlags()                            & (Intent.FLAG_GRANT_READ_URI_PERMISSION                            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);                    try {                        getActivity().getContentResolver().takePersistableUriPermission(originalUri, takeFlags);                    }                    catch (SecurityException e){                        e.printstacktrace();                    }                }                try {                    bitmap = BitmapFactory.decodeStream(getActivity().getContentResolver().openinputStream(originalUri));...

总结

以上是内存溢出为你收集整理的权限拒绝:打开提供程序com.android.providers.media.MediaDocumentsProvider全部内容,希望文章能够帮你解决权限拒绝:打开提供程序com.android.providers.media.MediaDocumentsProvider所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121027.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存