gpt4 book ai didi

android - 当我选择任何第三方相机应用程序时相机 Intent 中出现空指针异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:55:54 24 4
gpt4 key购买 nike

我的问题是,每次我选择第三方相机应用程序时,例如Beauty Plus Camera,我每次都会遇到空指针异常,我的代码完全适用于默认相机应用程序,它甚至适用于谷歌的新专为 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: 位图 photo = (Bitmap) data.getExtras().get("data");

最佳答案

如果您想利用第三方应用程序,将不会有完美的解决方案,因为它们不需要遵循与标准 Android 相机应用程序相同的契约(Contract)。但您可能会获得比现在更好的结果。

标准相机应用程序履行此契约(Contract):

  1. 它在 intent.getExtras.get("data") 中返回缩略图
  2. 如果您使用 intent.putExtra(MediaStore.EXTRA_OUTPUT, uri) 提供 Uri,它将在此位置保存全尺寸图像。

(有关重要​​详细信息,请参阅 training article。)

虽然您尝试的特定第三方相机应用程序不符合契约(Contract)的第 1 部分,但您可能更幸运地完成第 2 部分。

并且鉴于全尺寸图像,创建您显然需要的缩略图并不难,例如使用 Stack Overflow 上的答案。

关于android - 当我选择任何第三方相机应用程序时相机 Intent 中出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38010428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com