【发布时间】:2016-06-24 09:48:35
【问题描述】:
我的问题是,每次我选择第三方相机应用程序时,例如 Beauty Plus Camera 我每次都会遇到空指针异常,我的代码完全适用于默认相机应用程序,它甚至适用于 Google 的新相机应用程序专为 moto 系列手机打造的相机。
第一次选择画廊或相机选项的对话框在这里:
private void OpenDialogForImage() {
final CharSequence[] items = {
"Gallary", "Camera", "Cancel"
};
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
// Do something with the selection
switch (item) {
case 0:
Intent intent1 = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent1.setType("image/*");
startActivityForResult(
Intent.createChooser(intent1, "Select File"),
SELECT_FILE);
break;
case 1:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CAMERA);
break;
case 2:
break;
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
这是 OnActivityResult() 方法:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Sponser_key && resultCode == Activity.RESULT_OK) {
String sSponsors = data.getStringExtra("Sponsors");
if (sSponsors != null)
sponsorsResp = new Gson().fromJson(sSponsors, GetSponsorsResp.class);
} else if (requestCode == REQUEST_CAMERA) {
if (resultCode == activity.RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
ivProfile.setImageBitmap(photo);
// CALL THIS METHOD TO GET THE URI FROM THE BITMAP
Uri tempUri = Other.getImageUri(activity, photo);
file = new File(Other.getRealPathFromURI(activity, tempUri));
} else {
/**
* not select any image
*/
}
} else if (requestCode == SELECT_FILE) {
if (resultCode == activity.RESULT_OK) {
Uri selectedImageUri = data.getData();
ivProfile.setImageURI(selectedImageUri);
file = new File(Other.getPath(activity, selectedImageUri));
}
}
}
上面的代码说明适用于我之前提到的一些第三方应用程序。我在这一行得到 NullPointerException: 位图照片 = (Bitmap) data.getExtras().get("data");
【问题讨论】:
-
一定能帮到你...stackoverflow.com/a/21799005/6097062
-
好的@Saurabh我检查了那个答案,但是当我没有使用那个答案中提到的后退按钮时,我也得到了空指针。我只需单击相机按钮即可捕获图像,然后我的应用程序强制停止。
-
避免依赖第三方应用...可能有问题...而且您无法自己处理...
-
好的!所以我必须强制用户使用默认的相机应用程序,这是唯一的方法。 @Saurabh
-
正如你所说,你在使用美颜相机应用程序...可能有问题...尝试使用其他第三方相机应用程序...并调试您的代码以获得更好的解释
标签: android android-intent nullpointerexception camera android-camera-intent