내 앱에는 사용자가 동영상을 업로드 할 수있는 동영상 업로드 옵션이 있습니다. 사용자가 외부 저장소에서 동영상을 선택하려고 할 때를 제외하고는 모든 것이 잘 작동합니다. 응용 프로그램이 그냥 충돌하고 NullPointerException
줄 것이다. 누군가 이유를 설명해 주시겠습니까? 사용자가 갤러리 나 휴대 전화 저장소에서 동영상을 선택하지만 외부 저장소에서 동영상을 선택하면 기능이 제대로 작동합니까? 이것은 내가 아래외부 저장소 (sdcard)에서 비디오에 액세스하려고하면 android-get nullpointerexception이 발생합니다.
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { act=file:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/VIDEO0010.mp4 dat=file:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/VIDEO0010.mp4 }} to activity {com.myactivity.android/com.myactivity.android.Webviewer}: java.lang.NullPointerException
와 내 코드
private VideoFileInfo getVideoInfo(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA, MediaStore.Video.Media.SIZE, MediaStore.Video.Media.DURATION, MediaStore.Video.Media.TITLE };
Cursor cursor = managedQuery(uri, projection, null, null, null);
cursor.moveToFirst(); //this is where the app crashed
String filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
String fileName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
int fileSize = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
long duration = TimeUnit.MILLISECONDS.toSeconds(cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION)));
System.out.println("path: " + filePath);
System.out.println("name: " + fileName);
System.out.println("size: " + fileSize);
System.out.println("duration: " + duration);
vfi.setPathNameSizeDuration(filePath, fileName, fileSize, duration);
return vfi;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) {
case FILECHOOSER_REQUESTCODE_VIDEO:
if (resultCode == Activity.RESULT_OK) {
System.out.println("SELECT_AUDIO");
Uri selectedVideoUri = intent.getData();
selectedPath = getVideoInfo(selectedVideoUri).getPath();
System.out.println("SELECT_AUDIO Path : " + selectedPath);
//bm = BitmapFactory.decodeFile(selectedPath);
blVideoDail = true;
}
break;
}
}
private void createVideoIntent(){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("video/*");
Intent chooser = createVideoChooserIntent(createVideoFromCameraIntent());
chooser.putExtra(Intent.EXTRA_INTENT, intent);
startActivityForResult(chooser, FILECHOOSER_REQUESTCODE_VIDEO);
}
private Intent createVideoChooserIntent(Intent... intents) {
Intent chooser = new Intent(Intent.ACTION_CHOOSER);
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents);
chooser.putExtra(Intent.EXTRA_TITLE, "Please Choose Your Video");
return chooser;
}
private Intent createVideoFromCameraIntent() {
return new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
}
할 수있는 누군가가 도와 줘요있어 오류 메시지인가? 감사합니다
때 응용 프로그램이 충돌했을 때 cursor.moveToFirst();
충돌했습니다.
FATAL EXCEPTION: main
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { act=file:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/VIDEO0010.mp4 dat=file:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/VIDEO0010.mp4 }} to activity {com. myactivity .android/com.myactivity.android.Webviewer}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3387)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3437)
at android.app.ActivityThread.access$1100(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1291)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:4945)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.myactivity.android.Webviewer.getVideoInfo(Webviewer.java:455)
at com.myactivity.android.Webviewer.onActivityResult(Webviewer.java:500)
at android.app.Activity.dispatchActivityResult(Activity.java:4740)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3383)
... 11 more
logcat. null 포인터 예외가 발생하는 행을 알려주십시오. 더 나은 여전히, 그 라인을 직접 봐 - 그것은 일반적으로 알아 내기가 일반적으로 쉽습니다 ... – IanB
실제 장치 에서이 코드를 테스트하고 있습니까? – Mohit
예. 실제 장치에 – user1865027