android - 无法在 Android 模拟器中读取图像

标签 android linux permissions android-emulator

好吧,我真的迷路了:我有一个应用程序可以拍照(使用 Camera Intent)并将其显示在 ImageView 中。

无论我做什么,我都无法让它在模拟器中工作,它可以正常拍摄照片(在虚拟 sd 文件夹上用 adb shell 检查它:文件在那里),将它保存到虚拟 SD 卡 ...但无法读取它以便在 ImageView 中显示它,它不断抛出:

W/System.err:java.io.FileNotFoundException:/storage/0CE8-3A18/pics/IMG_XXXXXXXXXX.jpg: 打开失败:EACCES(权限被拒绝)

奇怪的是,这只发生在模拟器中,当部署在我的手机上时,它工作得很好(拍摄照片并将其显示在 ImageView 中)

我在 Linux Mint 17.2(64 位)上使用 Android Studio 1.3.2,我的 list 有:

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

以及检索保存的图像并在 ImageView 上显示的代码:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
        if (resultCode == RESULT_OK) { 
            // Image captured and saved to fileUri specified in the Intent
            Bitmap bitmap;
            try {
            /*************************************************
            //THIS IS THE CODE THAT FAILS, ONLY IN EMULATOR
            ***************************************************/
                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
                bitmap = Bitmap.createScaledBitmap(bitmap, 300, 300, false);
                showImg.setImageBitmap(bitmap);
          } catch (FileNotFoundException e)
          { 
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }
      } else if (resultCode == RESULT_CANCELED){ 
          // User cancelled the image capture 
          } else { 
          // Image capture failed, advise user } }
          }
     }

我不知道为什么会发生这种情况,我认为这可能与模拟器的一些模糊的 Linux 权限规则或其他东西有关...任何帮助将不胜感激。

最佳答案

您可以试试这个而不是从 MediaStore 加载:

位图 = BitmapFactory.decodeFile(imageUri); showImg.setImageBitmap(位图);

关于android - 无法在 Android 模拟器中读取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137858/

相关文章:

JavaFX - 由 : java. lang.UnsupportedOperationException : Unable to open DISPLAY? 引起

security - 我什么时候应该在我的应用程序中使用 ACL

python - 权限被拒绝 (Errno 13) - wandb init - 在 docker 容器中

Android Studio 未提交到 GitHub

android - kotlinx.serialization - 使用自定义 DateSerializer 将 ArrayList<Date> 序列化为数据类变量

java - 我在 Eclipse 中的 src 文件夹是空的。无法编写应用程序代码

linux - 为每个通配符匹配创建命令替换

c++ - 未定义对 vector<String> 的引用 g++ 链接器错误

android - 我怎样才能为我的 Android 应用程序获得可怕的 WRITE_SECURE_SETTINGS 权限?

java - java/android 中的数字签名(RSA key )