我在我的應用程序中創建了一個從相機拍照的類。 該課程將使用相機拍攝照片並將其存儲在具有唯一名稱的文件夾中。 但是,當我想要得到圖片路徑onActivityResult
方法Iget空data
一直!通過拍攝來自相機的照片在onActivityResult中獲得null null
這是我的照相機:
public class Camera{
private Activity activity;
private SystemTools systemTools;
public Camera(Context context) {
this.activity = (Activity) context;
systemTools = new SystemTools();
}
/**
* This Method will take a picture with camera for us
*/
public void takePicture() {
boolean cameraAvailable = systemTools.device_isHardwareFeatureAvailable(activity, PackageManager.FEATURE_CAMERA);
if (cameraAvailable &&
systemTools.system_isIntentAvailable(activity, MediaStore.ACTION_IMAGE_CAPTURE)) {
Intent takePicIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//We prepare the intent to store the taken picture
try {
File outputDir = systemTools.storage_getExternalPublicFolder("ReportsAttachments", true);
File outFile = systemTools.storage_createUniqueFileName("cameraPic", ".jpg", outputDir);
takePicIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outFile));
} catch (Exception e) {
Toast.makeText(activity, "در دریافت تصویر اشکالی رخ داده است ، لطفا دوباره تلاش کنید.", Toast.LENGTH_SHORT).show();
}
activity.startActivityForResult(takePicIntent, App.REQUEST_IMAGE_CAPTURE);
} else {
if (cameraAvailable) {
Toast.makeText(activity, "برنامه ی دوربین دستگاه خراب است.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(activity, "دسترسی به دوربین سیستم امکان پذیر نمی باشد.", Toast.LENGTH_SHORT).show();
}
}
}
}
的I設在活動onActivityResult()
方法,我用相機。像這樣:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == App.REQUEST_IMAGE_CAPTURE) {
if (resultCode == Activity.RESULT_OK && data != null) {
Log.i("ATTACH", "In Result");
Bitmap bmp = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
// CALL THIS METHOD TO GET THE URI FROM THE BITMAP
Uri selectedImage = getImageUri(this, bmp);
String realPath = getRealPathFromURI(selectedImage);
selectedImage = Uri.parse(realPath);
presenter.onNewAttachmentRequest(selectedImage.getPath());
}
}
} catch (Exception e) {
Log.i("ATTACH", e + " Something went wrong");
}
}
能正常工作和抽放pictre是SD_Card avaliable,但是當我想要得到的圖片的路徑我cant't因爲onActivityResult
「數據」爲空所有的時間! 這段代碼的問題在哪裏?
謝謝。
請確保您有存儲的權限,即讀寫權限,如果您的設備是marshmellow或以上,然後請添加運行時權限 –
我得到了所有權限。但它不起作用。 – Ehsan