相关疑难解决方法(0)

从mediastore获取URI的文件名和路径

onActivityResult从mediastore图像选择返回,我可以使用以下内容获取图像的URI:

Uri selectedImage = data.getData();
Run Code Online (Sandbox Code Playgroud)

将其转换为字符串可以得到:

content://media/external/images/media/47
Run Code Online (Sandbox Code Playgroud)

或者路径给出:

/external/images/media/47
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法找到将其转换为绝对路径的方法,因为我想将图像加载到位图而不必将其复制到某处.我知道这可以使用URI和内容解析器完成,但这似乎在重新启动手机时中断,我想MediaStore在重新启动之间不会保持其编号相同.

android uri absolute-path mediastore

376
推荐指数
12
解决办法
32万
查看次数

Android:java.lang.SecurityException:Permission Denial:启动Intent

我创建了一个包含GWVectraNotifier活动的应用程序,该活动从其他应用程序调用以显示通知.

在"通知"对话框中,将显示"显示"按钮和"关闭"按钮.

单击"显示"按钮,将启动相应的活动.

要检查上述应用程序的功能,

我在checkmail事件触发器上从K9Mail应用程序启动了GWVectraNotifier活动.

我能够成功启动GWVectraNotifier活动,但是点击'show'按钮我将不得不启动K9mail的'MessageList'活动.为此,我编写了以下代码:

Intent i = new Intent();
i.setComponent(new ComponentName("com.fsck.k9", "com.fsck.k9.activity.MessageList"));
i.putExtra("account", accUuid);
i.putExtra("folder", accFolder);
startActivity(i); 
Run Code Online (Sandbox Code Playgroud)

抛出:

WARN/ActivityManager(59): Permission denied: checkComponentPermission() reqUid=10050
WARN/ActivityManager(59): Permission Denial: starting Intent { cmp=com.fsck.k9/.activity.MessageList (has extras) } from ProcessRecord{43f6d7c8 675:com.i10n.notifier/10052} (pid=675, uid=10052) requires null
WARN/System.err(675): java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.fsck.k9/.activity.MessageList (has extras) } from ProcessRecord{43f6d7c8 675:com.i10n.notifier/10052} (pid=675, uid=10052) requires null
WARN/System.err(675):     at android.os.Parcel.readException(Parcel.java:1247)
WARN/System.err(675):     at android.os.Parcel.readException(Parcel.java:1235)
WARN/System.err(675):     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1298)
WARN/System.err(675):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1373)
WARN/System.err(675):     at android.app.Activity.startActivityForResult(Activity.java:2817)
WARN/System.err(675):     at android.app.Activity.startActivity(Activity.java:2923)
WARN/System.err(675):     at …
Run Code Online (Sandbox Code Playgroud)

permissions android securityexception denied

111
推荐指数
5
解决办法
18万
查看次数

尝试从MediaStore读取时,Android KitKat securityException

java.lang.SecurityException:权限拒绝:从ProcessRecord打开提供程序com.android.providers.media.MediaDocumentsProvider {430b1748 29271:com.xxx/u0a88}(pid = 29271,uid = 10088)需要android.permission.MANAGE_DOCUMENTS或android. permission.MANAGE_DOCUMENTS

我已添加MANAGE_DOCUMENTSREAD_EXTERNAL_STORAGE权限,但我仍然收到此错误.违规代码:

 public static String getImagePath(HailoDriverApplication app, Uri uri) {
    Cursor cursor = null;
    if (uri == null) {
        return null;
    }
    try {
        cursor = app.getContentResolver().query(uri, new String[] {
            MediaStore.Images.Media.DATA
        }, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        if (cursor.moveToFirst()) {
            return cursor.getString(column_index);
        }
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

正如所要求的清单片段:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.x.x.x" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" /> …
Run Code Online (Sandbox Code Playgroud)

android android-4.4-kitkat

46
推荐指数
3
解决办法
3万
查看次数

Android READ_EXTERNAL_STORAGE权限无效

我正在尝试创建一个简单的应用程序,可以从Gallery应用程序获取图像并将其显示在imageButton上.我在运行Android 5.0.1的手机上使用API​​ 21进行测试.不幸的是,无论我尝试什么,我都会遇到安全错误 - 即使我指定了权限.

我获取图像的代码是:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent){
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

    switch(requestCode){
        case PICK_IMAGE_REQUEST:
            if(resultCode == RESULT_OK && imageReturnedIntent != null && imageReturnedIntent.getData() != null) {
                Uri uri = imageReturnedIntent.getData();
                try {
                    Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
                    // Log.d(TAG, String.valueOf(bitmap));
                    ImageButton ib = (ImageButton) findViewById(R.id.inputImg);
                    ib.setImageBitmap(bitmap);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试从Dropbox中选择图像时代码有效,但是当我从图库中选择图像时,我得到了

java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/35634 from pid=25240, uid=10070 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
Run Code Online (Sandbox Code Playgroud)

我为READ_EXTERNAL_STORAGE制作了一个使用权限标记: …

java android android-gallery android-permissions android-5.0-lollipop

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

只需要较旧的Android版本的权限:maxSdkVersion不起作用?

我想仅为旧设备提供一些权限以实现兼容性.所以我做了一些研究,发现这里:

android:maxSdkVersion
应授予应用程序此权限的最高API级别.如果从某个API级别开始不再需要您的应用所需的权限,则设置此属性非常有用.

例如,从Android 4.4(API级别19)开始,当您的应用想要写入外部存储上自己的应用程序特定目录(getExternalFilesDir()提供的目录)时,您的应用不再需要请求WRITE_EXTERNAL_STORAGE权限.但是,API级别18及更低级别需要权限.因此,您可以声明此权限仅在API级别18之前需要,声明如下:

<uses-permission
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"
     android:maxSdkVersion="18" />
Run Code Online (Sandbox Code Playgroud)

我试图实现它,但它没有用.所以我建立了这个简单的测试:

<uses-permission
    android:name="android.permission.WRITE_SMS"
    android:maxSdkVersion="3" />
Run Code Online (Sandbox Code Playgroud)

据我所知,只有API级别为1-3的设备才需要此权限,但即使在API 18设备上,我也会收到此权限请求.我有什么不对或者这个功能坏了吗?

android android-manifest android-permissions

8
推荐指数
1
解决办法
6945
查看次数

SecurityException:Permission Denial:读取com.android.providers.media.MediaProvider你需要android.permission.READ_EXTERNAL_STORAGE

我有一个活动,有一个浏览器按钮,然后一个imageview,希望用户看到他们上传的内容,但每次选择什么图像想要"上传"我正在采取错误"没有回应"...虽然我已经把清单中的权限...

错误日志(logcat)

12-10 03:55:39.459 5357-5357/com.holomedia.holomedia E/AndroidRuntime:FATAL EXCEPTION:main进程:com.holomedia.holomedia,PID:5357 java.lang.RuntimeException:传递结果失败ResultInfo {who = null ,request = 1,result = -1,data = Intent {dat = content:// media/external/images/media/39}} to activity {com.holomedia.holomedia/com.holomedia.holomedia.Add_video}:java .lang.SecurityException:Permission Denial:从pid = 5357读取com.android.providers.media.MediaProvider uri content:// media/external/images/media/39,uid = 10060需要android.permission.READ_EXTERNAL_STORAGE或grantUriPermission( )android.app.A活动时,Android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)的android.app.ActivityThread.deliverResult(ActivityThread.java:3642)处于android.app.A活动时,在android.app.ActivityThread.-wrap16(ActivityThread.java)处. ActivityThread $ H.handleMessage(ActivityThread.java:1393)在android.app.Handler.dispatchMessage(Handler.java:102)android.app.Looper.loop(Looper.java:148)android.app .ActivityThread.main(ActivityThread.java:5417)位于com.android的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)的java.lang.reflect.Method.invoke(Native Method) .internal.os.ZygoteInit.main(ZygoteInit.java:616)引起:java.lang.SecurityException:Permission Denial:读取com.android.providers.media.MediaProvider uri content:// media/external/images/media/39来自pid = 5357,uid = 10060需要android.permission.READ_EXTERNAL_STORAGE,或android.ex.Dex上的androidA.D.Pexcel.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)的android.os.Parcel.readException(Parcel.java:1599)中的grantUriPermission()在Android.content的android.content.ContentResolver.query(ContentResolver.java:491)的android.content.ContentProviderProxy.query(ContentProviderNative.java:421)的android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)处. ContentResolver.query(ContentResolver.java:434)at com.holomedia.holomedia.Add_video.onActivityResult(Add_video.java:48)在Android.app.A活动中,android.app.ActivityThread.deliverResult(ActivityThread.java:3695)的android.app.ActivityThread.deliverResult(ActivityThread.java:3695)的android.app.Activity.dispatchActivityResult(Activity.java:6428). android.app.Handler.dispatchMessage(Handler.java:102)上android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1393)的ActivityThread.-wrap16(ActivityThread.java)

                                                                       at android.os.Looper.loop(Looper.java:148) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Run Code Online (Sandbox Code Playgroud)

...我的xml代码:

"<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ImageView
        android:id="@+id/imgView"
        android:layout_width="fill_parent"
        android:layout_height="462dp" …
Run Code Online (Sandbox Code Playgroud)

java android

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