AndroidでACTION_IMAGE_CATPUREインテントを実行する最も信頼性の高い方法は何ですか?私はオンラインで見つけたものを複数試してみましたが、どれもすべてのデバイスで動作していません。テストデバイスは、Nexus 6(Android 6.0.1)とLenovo電話(4.4.2)です。ACTION_IMAGE_CAPTUREインテントを信頼できる方法で実行しますか?
オプションA
final File root = new File(Environment.getExternalStorageDirectory() + File.separator + "MyDir" + File.separator);
root.mkdirs();
final String fname = "img_" + System.currentTimeMillis() + ".jpg";
outputFileUri = Uri.fromFile(new File(root, fname));
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePhotoIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, outputFileUri);
try {
startActivityForResult(takePhotoIntent, 1);
} catch (SecurityException e) { }
// ....
public void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println(new File(outputFileUri.toString()).exists()));
// This prints false on Kitkat, but true on 6.0
オプションB((のみネクサス6で動作します): - 私は、次の(これらは明らかに正常に動作している権限のような取り外し冗長コード)を試してみた
どちらでも動作しませんが、両方で動作するはずです)
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
outputFileUri = takePhotoIntent.getData();
// start intent
// .....
public void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println(new File(outputFileUri.toString()).exists()));
// This prints false on everything
がのAndroid版でこれを行うには信頼できる方法になるはずですが、私は過去1時間にスタックオーバーフローが発生しており、試した10個以上の解決策があります。 Androidのバージョン。
ACTION_IMAGE_CAPTUREインテントから確実にUriを取得するにはどうすればよいですか?
あなたのlogcat whatsシステムが言っていることを示しますか? –
ログにはランダム性があります。探したいのは何ですか? printステートメントの前にスローされたエラーはありません。つまり、コピーして貼り付けることができますが、探したいものが分からないと約500行になります。 – CaptainForge
@SohailZahid上記のSystem.outを意味するのであれば、説明したようにfalseを出力します。 – CaptainForge