java - 从图库中选择的图像不会在 ImageView 中设置

标签 java android bitmap

我正在使用操作系统为 Android 5.1.1 的摩托罗拉 G3 设备。

当我尝试从图库中挑选图片并将其设置为 ImageView 时,出现异常。下面是我的代码:

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

        String selectedImageUri = getImageFromChooser(requestCode, resultCode, data);
        if (!selectedImageUri.equals("")) {
            Uri filePath = data.getData();
            try {
                Bitmap bitmap = BitmapFactory.decodeFile(selectedImageUri);
                ivAvatar.setImageBitmap(Bitmap.createScaledBitmap(bitmap, 120, 120, false)); 
            } catch (Exception e) {
                e.printStackTrace();
            }

        } else {
            Toast.makeText(getApplicationContext(), "Try Again!", Toast.LENGTH_LONG).show();
        }
}

我调试了代码,发现 URI 正常,问题是初始化 Bitmap 对象。

这是我遇到的异常:

请任何人帮我解决这个问题:

01-01 12:12:16.074 27143-27143/com.wavi E/UploadItemActivity: idx :: 0
01-01 12:12:16.074 27143-27143/com.wavi E/selectedImageURI:ImagePhoto:-/storage/emulated/0/Pictures/1451279699474.jpg
01-01 12:12:16.076 27143-27143/com.wavi E/UploadItemActivity: Image Pathe ::  /storage/emulated/0/Pictures/1451279699474.jpg
01-01 12:12:16.078 27143-27143/com.wavi E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Pictures/1451279699474.jpg: open failed: EACCES (Permission denied)
01-01 12:12:16.078 27143-27143/com.wavi W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:     at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:617)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at com.wavi.profile.EditProfileActivity.onActivityResult(EditProfileActivity.java:201)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at android.app.Activity.dispatchActivityResult(Activity.java:6218)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at android.app.ActivityThread.deliverResults(ActivityThread.java:3655)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at android.app.ActivityThread.handleSendResult(ActivityThread.java:3702)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at android.app.ActivityThread.access$1300(ActivityThread.java:155)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at android.os.Handler.dispatchMessage(Handler.java:102)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at android.os.Looper.loop(Looper.java:135)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at android.app.ActivityThread.main(ActivityThread.java:5343)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at java.lang.reflect.Method.invoke(Native Method)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at java.lang.reflect.Method.invoke(Method.java:372)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
01-01 12:12:16.082 27143-27143/com.wavi W/System.err:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:702)

谢谢!

最佳答案

在你的 logcat 里写的很清楚 Permission denied,你需要在你的 manifest 里给 READ 权限。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

关于java - 从图库中选择的图像不会在 ImageView 中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34554207/

相关文章:

java - 编辑中返回意外值 - JTree

java - zxing条码扫描仪的android list 文件中需要添加什么?

android - 是否可以将位图的点作为路径?

android - "Need login credentials for app review"对于只有手机号码作为登录选项的应用程序

android - 平板电脑上 Android Honeycomb 的 UI 指南

java - Android 16 位彩色图像到位图

c++ - Windows api获取客户端dc位图大小

java - 如何从 JDBC 结果集中获取行数?

java - 使用jdbc在Oracle sql中过滤特定日期范围内的数据

java - 如何在位图上居中和缩放叠加的可绘制图标