我可以在三星和htc的画廊拍摄视频。但是在nexus和moto g中,我从onActivityresult得到了一个空指针异常。为什么它不适用于这款手机?
onClick:
selectPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("video/*");
Uri uri=getOutputVideoUri();
intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
startActivityForResult(
Intent.createChooser(intent, "Select video"),
SELECT_PHOTO);
}
});
onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
if (resultCode == RESULT_OK) {
Bundle extras=new Bundle();
selectedImage = imageReturnedIntent.getData();
file_select = true;
Log.i("selectedImage","Upload-->" +selectedImage);
// -----------------
imageUrl = getRealPathFromURI(selectedImage);
Log.i("imageurl", "Upload-->" + imageUrl);
Log.i("RealPathFromURI", imageUrl + "laxmi");
String filepath = getRealPathFromURI(selectedImage);
File fil = new File(filepath);
filename = fil.getName();
if (filename.endsWith(".mp4") || filename.endsWith(".flv")
|| filename.endsWith(".3gp")) {
videoname.setText(fil.getName());
Bitmap bmThumbnail;
bmThumbnail = ThumbnailUtils.createVideoThumbnail(filepath,
Thumbnails.MICRO_KIND);
image.setImageBitmap(bmThumbnail);
} else {
Toast.makeText(context,
"Por favor, seleccione un archivo de v�deo ",
Toast.LENGTH_SHORT).show();
}
}
if (resultCode == PICK_CATEGORY) {
category_select = true;
cat_id = imageReturnedIntent.getStringExtra("catid");
String category_name = imageReturnedIntent
.getStringExtra("catname");
spinner.setText(" " + category_name);
}
}
public String getRealPathFromURI(Uri contentUri) {
try{
String[] proj = { MediaStore.Video.Media.DATA };
//Cursor cursor = activity.managedQuery(contentUri, proj, null, null,
//null);
Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
Log.i("cursor", "upload-->" + cursor);
Log.i("contentUri", "upload-->" + contentUri);
Log.i("proj", "upload-->" + proj);
int position=0;
if (cursor !=null && cursor.moveToPosition(position)) {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
Log.i("column_index", "Upload-->" + column_index);
videoPath = cursor.getString(column_index); //I got a null pointer exception here.(But cursor hreturns saome value)
Log.i("videoPath", "Upload-->" + videoPath);
cursor.close();
}
}catch(Exception e){
return contentUri.getPath();
}
return videoPath;
}
答案 0 :(得分:0)
您使用过intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
。删除它。你不会获得NPE。