【发布时间】:2016-01-13 06:44:44
【问题描述】:
好吧,我真的迷路了:我有一个应用程序应该拍照(使用相机意图)并将其显示在图像视图中。
无论我做什么,我都无法让它在模拟器中工作,它可以拍照(用虚拟 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,我的清单有:
<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 模拟器权限规则有关......任何帮助将不胜感激。
【问题讨论】:
标签: android linux permissions android-emulator