在Android上執行ACTION_IMAGE_CATPURE意圖的最可靠方法是什麼?我已經嘗試過多種在線搜索,並且它們都不適用於任何設備。我的測試設備是Nexus 6(Android 6.0.1)和聯想手機(4.4.2)。做ACTION_IMAGE_CAPTURE意圖的可靠方法?
我試過以下(去除冗餘代碼樣的權限 - 這顯然正常工作):
選項A(只適用於Nexus 6)
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(在兩者上都不起作用,但似乎它應該對兩者都起作用)
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版本,但我一直在堆棧溢出了過去一小時,有10多個我嘗試過的解決方案,並沒有一個在舊的工作Android版本。
如何可靠地從ACTION_IMAGE_CAPTURE意圖獲取Uri?
顯示你的logcat什麼系統在說什麼? –
日誌充滿了隨機性 - 我應該尋找什麼?打印聲明之前沒有發生任何錯誤。我的意思是,我可以複製/粘貼它,但它將會有大約500行,而不知道要查找什麼。 – CaptainForge
@SohailZahid如果你的意思是上面的System.out,它只是按照描述打印假。 – CaptainForge