Android 相机意图在索尼手机中引发空指针异常
我想要的是Android 相机意图在索尼手机中引发空指针异常,android,sony,android-camera-intent,Android,Sony,Android Camera Intent,我想要的是照相机意图,它可以在除索尼C2305[4.2.2]以外的其他设备上完美运行。在4.2.2模拟器上进行测试,该模拟器运行良好 下面是代码片段。我使用呼叫摄像机意图 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); getImagePath(); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(int
照相机意图
,它可以在除索尼C2305
[4.2.2]以外的其他设备上完美运行。在4.2.2模拟器上进行测试,该模拟器运行良好
下面是代码片段。我使用呼叫摄像机意图
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
getImagePath();
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, REQUEST_CAMERA);
将活动的结果获取为:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CAMERA) {
if(resultCode == RESULT_OK)
{
BitmapFactory.Options btmapOptions = new BitmapFactory.Options();
btmapOptions.inSampleSize = 2;
bm = BitmapFactory.decodeFile(currentFileUri.getPath(), btmapOptions);
NewExpensesActivity.this.data.add(bm);
imagesAdapter.notifyDataSetChanged();
compressedPath = ImageCompression.compressImage(currentFileUri.getPath());//ADDED 10018
galleryAddPic();
paths.add(compressedPath);//EDITED 10018
}
}
}
但它在传递结果时抛出空指针异常
日志类别:
在这里,您没有在
tempFile
中提供任何图像名称,因此拍摄的图像可以使用该名称保存在SD卡中
现在,比如说,图像名称将是123.jpg
…替换这个
File tempFile = new File(Environment.getExternalStorageDirectory().getPath()+"/ABC";);
与
File tempFile = new File(Environment.getExternalStorageDirectory().getPath()+"/ABC/123.jpg");
摄像机意图
try {
Log.d("Main Activity", "Camera");
String fileName = "temp.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
mImageCaptureUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,mImageCaptureUri);
startActivityForResult(intent, 2);
} catch (Exception e) {
// TODO Auto-generated catch block
}
protected void onActivityResult(final int requestCode,final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("Main Activity", "On Activity Result");
try {
Uri selectedImage=null;
if(requestCode == 2 && resultCode == RESULT_OK )
{
/* Log.d("Main Activity", "Camera");
File fi = new File("/sdcard/tmp");
try {
selectedImage = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), fi.getAbsolutePath(), null, null));
if (!fi.delete()) {
Log.i("logMarker", "Failed to delete " + fi);
}
} catch (Exception e) {
e.printStackTrace();
}*/
selectedImage=mImageCaptureUri;
/* mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),
"tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
selectedImage=mImageCaptureUri;*/
}
if(selectedImage==null)
{
Log.d("Main Activity","Back");
return;
}
} catch (Exception e) {
// TODO Auto-generated catch block
Log.d("Main Activity","Exception");
return;
}
return;
}
onActivityResult
try {
Log.d("Main Activity", "Camera");
String fileName = "temp.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
mImageCaptureUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,mImageCaptureUri);
startActivityForResult(intent, 2);
} catch (Exception e) {
// TODO Auto-generated catch block
}
protected void onActivityResult(final int requestCode,final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("Main Activity", "On Activity Result");
try {
Uri selectedImage=null;
if(requestCode == 2 && resultCode == RESULT_OK )
{
/* Log.d("Main Activity", "Camera");
File fi = new File("/sdcard/tmp");
try {
selectedImage = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), fi.getAbsolutePath(), null, null));
if (!fi.delete()) {
Log.i("logMarker", "Failed to delete " + fi);
}
} catch (Exception e) {
e.printStackTrace();
}*/
selectedImage=mImageCaptureUri;
/* mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),
"tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
selectedImage=mImageCaptureUri;*/
}
if(selectedImage==null)
{
Log.d("Main Activity","Back");
return;
}
} catch (Exception e) {
// TODO Auto-generated catch block
Log.d("Main Activity","Exception");
return;
}
return;
}
selectedImage是捕获图像的Uri,在索尼手机中工作正常。where is
AddSxActivity.java:485
?检查onActivityResult中AddSxActivity.java类中的代码。你在那里得到了一些东西。另外,请发布您的全部活动代码。@SiddharthVyas:但同样的应用程序在其他手机上也可以正常工作。正是索尼导致了这些NPE。请检查编辑的SO。@Shayanpourvatan第485行:bm=BitmapFactory.decodeFile(currentFileUri.getPath(),btmapOptions)
在其他手机上运行非常平稳,但没有抛出NPE。把它放在try-and-catch块中,现在让我们看看。我已经在传递那个些变量,正如你们所描述的那个样。请参阅。