![](/img/trans.png)
[英]Android Intent data fails and intent resolution returns ActivityNotFoundException
[英]android camera intent returns no data
從攝像機意圖中拍攝照片后,我遇到了從'onActivityResult'方法獲取數據的問題。
這是我調用相機Intent的方法:
private void __initCamera() {
String path = Environment.getExternalStorageDirectory() + "/vault/images/";
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs();
dir = new File(path);
}
String[] content = dir.list();
String fileName = (content.length + 1) + ".jpg";
File file = new File(path, fileName);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException ex) {
Log.e("my_app", ex.getMessage());
}
}
Uri uri = Uri.fromFile(file);
Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
i.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(i, 8765);
}
這是我的onActivityResult方法:
returnCode: -1(should be: 1, right?),
exception: java.io.FileNotFoundException: No content provider: #Intent;action=inline-data;end
data.toURI(): #Intent;action=inline-data;end
@Override
protected void onActivityResult(int requestCode, int returnCode, Intent data) {
try {
Bitmap bitmap = Media.getBitmap(getContentResolver(), Uri.parse(data.toURI()));
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, out);
bitmap.recycle();
out.close();
} catch (Exception ex) {
Log.e("TROLL", ex.toString());
}
}
這個:
Bitmap bitmap = Media.getBitmap(getContentResolver(), Uri.parse(data.toURI()));
應該是這樣的:
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
至少,這就是我通常檢索圖像的方式。 此外,我建議檢查正確的請求代碼,而不是使用包含所有包含的異常。
接受的答案僅提供獲取圖像縮略圖的方法,而不是完整大小的縮略圖。 要獲得完整尺寸的圖像,您應該提供一個uri,相機將存儲圖像,如下所示:
intent.putExtra(MediaStore.EXTRA_OUTPUT, mUri);
然后在你的onActivityResult
你可以使用你保存的uri來獲取圖像:
Bitmap bitmap = Media.getBitmap(getContentResolver(), Uri.parse(mUri));
這是Android 文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.