如何在imageView上显示从内部存储中选择的图像?

2023-12-30

我是在 android 中处理图像的新手。我想从内部存储加载图像,但它给了我权限被拒绝错误,然后我已将权限添加到 android 清单文件。但我仍然无法完成我的任务。

这是我的代码:

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView image = (ImageView)findViewById(R.id.imageView);
        Bitmap bm = BitmapFactory.decodeFile("/storage/emulated/0/DCIM/Camera/IMG_20151102_193132.jpg");
        image.setImageBitmap(bm);

    }
}

logcat:

01-16 15:16:11.345 6533-6533/com.example.jaytanna.imagemap E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/DCIM/Camera/IMG_20151102_193132.jpg: open failed: EACCES (Permission denied)

它不显示任何图像。请帮我解决这个问题。谢谢。


检查这个

     File imgFile = new  File("/storage/emulated/0/DCIM/Camera/IMG_20151102_193132.jpg");
      if(imgFile.exists()){

        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

        ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);

        myImage.setImageBitmap(myBitmap);

      };

并在清单文件中包含此权限:

<manifest>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
    <application>
        ...
        <activity> 
            ...
        </activity>
    </application>
</manifest> 

对于 API 23+,您需要请求读/写权限,即使它们已经在您的清单中。

// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE
};

/**
 * Checks if the app has permission to write to device storage
 *
 * If the app does not has permission then the user will be prompted to grant permissions
 *
 * @param activity
 */
public static void verifyStoragePermissions(Activity activity) {
    // Check if we have write permission
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);

    if (permission != PackageManager.PERMISSION_GRANTED) {
        // We don't have permission so prompt the user
        ActivityCompat.requestPermissions(
                activity,
                PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE
        );
    }
}

要处理响应,您可以使用我复制的这段代码http://web.archive.org/web/20160111030837/http://developer.android.com/training/permissions/requesting.html http://web.archive.org/web/20160111030837/http://developer.android.com/training/permissions/requesting.html

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

有关请求 API 23+ 权限的官方文档,请检查https://developer.android.com/training/permissions/requesting.html https://developer.android.com/training/permissions/requesting.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在imageView上显示从内部存储中选择的图像? 的相关文章

随机推荐

  • 线程安全队列有问题吗?

    我正在尝试使用 C 中的 pthreads 编写线程安全队列 我的程序在 93 的情况下都能运行 另外 7 的时间它会吐出垃圾 或者似乎睡着了 我想知道我的队列中是否存在一些缺陷 上下文切换会破坏它 thread safe queue in
  • http 收到 304 但仍然下载内容

    我请求了一个html文件 我得到了http状态代码304 我知道这意味着内容没有被修改 所以浏览器可以使用缓存 但我注意到请求计时信息中内容下载用了 2 63 秒 我用 Chrome 开发工具进行了调试 既然浏览器有缓存 为什么它仍然下载内
  • s3直接上传限制文件大小和类型

    一个新手问题 但我用谷歌搜索了一下 似乎找不到任何解决方案 我希望允许用户直接将文件上传到 S3 而不是先通过我的服务器 通过这样做 有什么方法可以在实际上传到 S3 之前检查文件的大小限制和允许的类型吗 最好不要使用 flash 而使用
  • 将 Kafka 中的 Avro 转换为 Parquet 直接转入 S3

    我的 Kafka 主题以 Avro 格式存储 我想使用整个主题 在收到时不会更改任何消息 并将其转换为 Parquet 直接保存在 S3 上 我目前正在这样做 但它需要我一次使用来自 Kafka 的消息并在本地计算机上处 理 将它们转换为
  • 删除最后一次出现数值后的所有内容

    我需要删除最后一次出现数值后的所有内容 如下所示 1234D应该1234 ABCD1234A BC应该ABCD1234 这个方法应该可以为你做到 public string StripAfterLastNumber string s int
  • Android 中用于确认码的虚线输入字段

    我正在尝试为 android 布局中的数字创建一个虚线输入字段 例如 我可以在其中添加 4 个数字并将它们放入我的主要活动中 我进行了很多搜索 但没有找到更好的解决方案 使用这个库来实现您的目标 https github com gloma
  • 无法添加应用程序 ID,因为已超出“7”天内的“10”个应用程序 ID 限制[重复]

    这个问题在这里已经有答案了 I m getting this weird error when I try to hit this button to fix this error for the app I just made I am
  • 如何使用 Spring Data REST 更新 @ManyToOne 关系?

    我将 Spring Data REST 与 JPA 结合使用 我有一个 User 实体 它与另一个在单独的 RDBMS 表中建模的名为 AccountStatus 的实体具有多对一关系 JSON 表示如下所示 id 123 username
  • ModuleNotFoundError:没有名为“django”的模块

    我已经使用 django 在虚拟环境中构建了一个站点 并按照 AWS 文档中的步骤部署该站点 我已使用 Elastic Beanstalk 将我的网站部署到 AWS Web 服务器 并设置了运行 3 6 和 django 2 1 1 的 p
  • Domino 8.5.3 64 位中 HTTPJVMMaxHeapSize 的最佳设置

    我试图找到关于 Domino 8 5 3 FP4 64 位 Windows 中 JVM 堆大小的最佳设置的明确答案 我知道默认情况下它设置为1024M 一些网站建议建议使用 1G 1024M 但这是默认设置 所以就那么好了吗 其他网站称可用
  • 在 Android VideoView 上绘制叠加层(HUD)?

    我有一个绘制的自定义视图HUD 这是我的布局
  • 约束必须是字符串(或 null)

    我找不到错误来挽救我的生命 错误是 约束必须是字符串 或空 我不知道为什么它会给我这个错误 我必须错过一些简单的东西 我尝试添加 例如 dataPane new JPanel new GridBagLayout 到我所有的面板 什么也没有
  • Scala 中的阻塞关键字

    有什么区别Future blocking blockingCall and blocking Future blockingCall 这两个都定义在scala concurrent 我看过在 scala 文档中 http docs scal
  • 泛型和从不同类调用重载方法 - 优先级问题[重复]

    这个问题在这里已经有答案了 首先 对这个标题感到抱歉 但我想不出更好的了 我的问题可以通过简单的代码示例来呈现 public static class Test
  • mysql - 如何处理使用特殊字符%(百分比)和_(下划线)的查询搜索

    我的数据库中有 2 条记录 Tom Jerry and Ninja Kids 一个有特殊字符 百分比 另一个有 下划线 我在 mysql 终端尝试了以下命令 SELECT FROM CUSTOMER WHERE NAME LIKE SELE
  • 使用 dart 和 flutter 与 google calendar api 来获取用户日历上的事件列表

    我正在尝试通过重新构建我之前用 Java 编写的应用程序来学习如何使用 dart 和 flutter 其中涉及使用 Google 自己的日历 API 从 Google 日历获取事件 通过阅读 不是很详细 googleapis auth 包的
  • Xpath:从 id 属性与 id 锚点的匹配中查找元素值

    我想找到与 id 属性匹配的元素的值 我只有 ref 带 的位 锚点 我正在寻找 partyId 的值 lt party id partyA gt lt partyId gt THEID lt partyId gt 但要到达那里 我只有以下
  • 如何将受信任的证书添加到 OkHttp

    我需要使用 OkHttp 客户端信任一个特定站点的证书 我在这里找到了解决方案 https jebware com blog p 340 https jebware com blog p 340 这段代码与我想要信任的服务器配合得很好 唯一
  • Android 外部存储与 SD 卡

    阅读有关存储文件的 Android 文档后 我发现外部存储可以包括可移动 SD 卡和设备内部存储 即不可移动 选择将文件保存到外部存储时 是否可以区分可移动存储和不可移动存储 我认为您无法可靠地区分内部和外部 SD 存储 乍一看 您似乎可以
  • 如何在imageView上显示从内部存储中选择的图像?

    我是在 android 中处理图像的新手 我想从内部存储加载图像 但它给了我权限被拒绝错误 然后我已将权限添加到 android 清单文件 但我仍然无法完成我的任务 这是我的代码 import android graphics Bitmap