我想用我的相機拍照。我只需要他們時間,所以我下面的:相機結果始終返回RESULT_CANCELED
private void takePicture() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(this.getActivity().getPackageManager()) != null) {
try {
this.imageFile = File.createTempFile("CROP_SHOT", ".jpg", this.getActivity().getCacheDir());
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(this.imageFile));
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
this.startActivityForResult(intent, Globals.REQUEST_TAKE_PHOTO);
} catch (IOException e) {
e.printStackTrace();
}
}
}
不幸的是,結果代碼RESULT_CANCELED
我onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.v("PictureEdit", "onActivityResult");
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK) {
if(requestCode == Globals.REQUEST_TAKE_PHOTO) {
Log.v("PictureEdit", "onActivityResult take photo");
this.startCropImage(Uri.fromFile(this.imageFile));
} else if (requestCode == Globals.REQUEST_PICK_PHOTO) {
Log.v("PictureEdit", "onActivityResult pick photo");
this.startCropImage(data.getData());
} else if (requestCode == Globals.REQUEST_CROP_PHOTO) {
Log.v("PictureEdit", "onActivityResult crop photo");
this.imageEncoded = data.getStringExtra(Globals.KEY_IMAGE_ENCODED);
this.imageView.setImageBitmap(Images.decodeImage(imageEncoded));
this.buttonSave.setEnabled(true);
} else {
Log.v("PictureEdit", "onActivityResult requestCode: " + requestCode + ", result: " + resultCode);
}
} else {
Log.v("PictureEdit", "onActivityResult resultCode is not ok: " + resultCode);
}
}
每一個解決方案,我發現到目前爲止的計算器,並在網上並沒有解決我的問題。我用的是緩存目錄創建一個臨時文件:
File.createTempFile("CROP_SHOT", ".jpg", this.getActivity().getCacheDir());
,我有正確的權限:
<uses-permission android:name="android.permission.CAMERA" />
<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.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
採摘從我的智能手機的圖像始終正常工作:
private void pickPicture() {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
this.startActivityForResult(intent, Globals.REQUEST_PICK_PHOTO);
}
那麼,爲什麼相機是否總是返回RESULT_CANCELED
?
它出現在搭載Android 6.0的Nexus 4和搭載Android 4.2的三星Galaxy S III上。
很大。 thx爲這裏所有的知識。 – Mulgard
同意不應創建新文件。不知道爲什麼谷歌培訓文檔創建一個臨時文件,然後創建相機應用程序將通過FileProvider使用的URI。 https://developer.android.com/training/camera/photobasics.html#TaskCaptureIntent – vman
只是簡單地實例化一個文件指向外部緩存目錄沒有幫助。當我們點擊使用圖片時,凸輪不響應。 – Debdeep