2013-08-05 2 views
0

연락처 앱과 동일한 앱이 있습니다. 여기서는 전화 번호, 갤러리 사진 등의 연락처 정보를 추가 할 것입니다. quickcctedbadge를 찍었습니다. clciked가 사용자를 전화 갤러리로 가져 가서 사용자가 원하는 사진을 선택할 수있게합니다."다운로드 할 수 없습니다. 나중에 다시 시도하십시오."android app에서 갤러리에서 이미지를로드하려고 할 때

여기까지 내 모든 코드가 올바르게 작동합니다. 특정 이미지를 클릭하면 "현재 다운로드 할 수 없습니다. 나중에 다시 시도하십시오."라는 메시지와 함께 앱이 종료되었습니다. 나는 같은 이미지로 휴대 전화 주소록 앱을 사용해 보았습니다. 그것은로드했습니다.

다음

내 코드는,

// When Gallery option is selected from menu. 
    public boolean onContextItemSelected(MenuItem item) { 

    super.onContextItemSelected(item); 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item 
      .getMenuInfo(); 
    int menuItemIndex = item.getItemId(); 
    if (item.getTitle().toString().equalsIgnoreCase("Album")) { 
     Intent i = new Intent(
       Intent.ACTION_PICK, 
       android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI); 

     startActivityForResult(i, RESULT_LOAD_IMAGE); 
    } 
    return true; 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK 
      && null != data) { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

       //set selected image to quickcontactbadge 
     qcbaddcustomer 
       .setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
     // String picturePath contains the path of selected Image 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
    } 

이 이미지를 참조하십시오,

enter image description here

나는 고장이 전화 또는 내 코드의 경우 잘 모릅니다.

내 로그 캣 명확히하거나 좀 솔루션을 제안 해주십시오

08-05 16:43:48.976: E/AndroidRuntime(14257): FATAL EXCEPTION: main 
08-05 16:43:48.976: E/AndroidRuntime(14257): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat= }} to activity {com.sriniinfotech/com.sriniinfotech.AddCustomers}: java.lang.NullPointerException 
08-05 16:43:48.976: E/AndroidRuntime(14257): at android.app.ActivityThread.deliverResults(ActivityThread.java:2536) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at android.app.ActivityThread.handleSendResult(ActivityThread.java:2578) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at android.app.ActivityThread.access$2000(ActivityThread.java:117) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:965) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at android.os.Looper.loop(Looper.java:130) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at android.app.ActivityThread.main(ActivityThread.java:3687) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at java.lang.reflect.Method.invokeNative(Native Method) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at java.lang.reflect.Method.invoke(Method.java:507) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at dalvik.system.NativeStart.main(Native Method) 
08-05 16:43:48.976: E/AndroidRuntime(14257): Caused by: java.lang.NullPointerException 
08-05 16:43:48.976: E/AndroidRuntime(14257): at com.sriniinfotech.AddCustomers.onActivityResult(AddCustomers.java:363) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at android.app.Activity.dispatchActivityResult(Activity.java:3908) 
08-05 16:43:48.976: E/AndroidRuntime(14257): at android.app.ActivityThread.deliverResults(ActivityThread.java:2532) 

사람입니다.

도움을 주시면 감사하겠습니다. 감사.

public String getPath(Uri uri) { 
     String[] projection = { MediaColumns.DATA }; 
     Cursor cursor = managedQuery(uri, projection, null, null, null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA); 
     cursor.moveToFirst(); 
     final String imagePath = cursor.getString(column_index); 
     return imagePath; 
} 

을 그리고 그냥 내가 모르는

Uri selectedImage = data.getData(); 
String picturePath = getPath(selectedImage); 

전화 사용자의 의도 정의에 아무 잘못이있는 경우, 그러나 여기 내 애플 리케이션에 내가 그랬어 :

답변

1

대신이 방법을 사용해보십시오 like :

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
photoPickerIntent.setType("image/*"); 
startActivityForResult(photoPickerIntent, RESULT_LOAD_IMAGE); 
+0

감사합니다. 여전히 같은 오류가 발생합니다. 내 logcat 게시했습니다. 문제를 해결할 수 있는지 확인하십시오. – Mahe

+0

라인 363은 무엇입니까? –

+0

다음 줄이 있습니다. String picturePath = getPath (data.getData()); 여기에 NULL 포인터 예외 – Mahe