2013-08-02 22 views
1

何時,我拍下照片,我在下面收到錯誤。請注意,該應用程序完美工作在HTC韻和星系標籤7.7。它如何被修復?java.lang.RuntimeException:無法恢復Lg系列的活動

08-06 13:18:29.084: E/AndroidRuntime(27803): FATAL EXCEPTION: main 
08-06 13:18:29.084: E/AndroidRuntime(27803): java.lang.RuntimeException: Unable to resume activity {ua.mirkvartir.android.frontend/ua.mirkvartir.android.frontend.AddFillActivityApp}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=12, result=-1, data=null} to activity {ua.mirkvartir.android.frontend/ua.mirkvartir.android.frontend.AddFillActivityApp}: java.lang.NullPointerException 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2608) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2636) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2103) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3576) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread.access$700(ActivityThread.java:138) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.os.Looper.loop(Looper.java:137) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread.main(ActivityThread.java:4905) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at java.lang.reflect.Method.invokeNative(Native Method) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at java.lang.reflect.Method.invoke(Method.java:511) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at dalvik.system.NativeStart.main(Native Method) 
08-06 13:18:29.084: E/AndroidRuntime(27803): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=12, result=-1, data=null} to activity {ua.mirkvartir.android.frontend/ua.mirkvartir.android.frontend.AddFillActivityApp}: java.lang.NullPointerException 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread.deliverResults(ActivityThread.java:3205) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2595) 
08-06 13:18:29.084: E/AndroidRuntime(27803): ... 13 more 
08-06 13:18:29.084: E/AndroidRuntime(27803): Caused by: java.lang.NullPointerException 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1094) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.content.ContentResolver.query(ContentResolver.java:354) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.content.ContentResolver.query(ContentResolver.java:313) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.support.v4.content.CursorLoader.loadInBackground(CursorLoader.java:49) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at ua.mirkvartir.android.frontend.AddFillActivityApp.getRealPathFromURI(AddFillActivityApp.java:844) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at ua.mirkvartir.android.frontend.AddFillActivityApp.onActivityResult(AddFillActivityApp.java:704) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.Activity.dispatchActivityResult(Activity.java:5492) 
08-06 13:18:29.084: E/AndroidRuntime(27803): at android.app.ActivityThread.deliverResults(ActivityThread.java:3201) 

forResult調用

Calendar c = Calendar.getInstance(); 
           ContentValues values = new ContentValues(); 
           values.put(MediaStore.Images.Media.TITLE, 
             "zdanie " + c.getTime()); 
           mCapturedImageURI = getContentResolver() 
             .insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
               values); 
           Intent intentPicture = new Intent(
             MediaStore.ACTION_IMAGE_CAPTURE); 
           intentPicture.putExtra(MediaStore.EXTRA_OUTPUT, 
             mCapturedImageURI); 
           startActivityForResult(intentPicture, 12); 

onResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == 12 && resultCode == RESULT_OK) { 
      // photo1 = getRealPathFromURI(mCapturedImageURI); 
      saveFile(
        decodeSampledBitmapFromResource(
          getRealPathFromURI(mCapturedImageURI), 800, 800), 1); 
      pho1.setImageBitmap(decodeSampledBitmapFromResource(
        getRealPathFromURI(mCapturedImageURI), 80, 60)); 
      miss1 = 1; 

     } 
} 

getRealPath

public String getRealPathFromURI(Uri contentUri) { 
     if (contentUri==null){ 
      Log.e("RealPath", "URI: null"); 
     }else Log.e("RealPath", "URI: "+contentUri.toString()); 
     try { 
      String[] proj = { MediaStore.Images.Media.DATA }; 
      CursorLoader loader = new CursorLoader(getApplicationContext(), 
        contentUri, proj, null, null, null); 
      Cursor cursor = loader.loadInBackground(); 
      int column_index = cursor 
        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      return cursor.getString(column_index); 
     } catch (Exception e) { 
      Log.e("RealPath", e.toString()); 
      e.printStackTrace(); 
     } 
     return ""; 
    } 

從真實路徑catch塊堆棧跟蹤

08-06 15:33:23.520: W/System.err(22083): java.lang.NullPointerException 
08-06 15:33:23.536: W/System.err(22083): at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1097) 
08-06 15:33:23.544: W/System.err(22083): at android.content.ContentResolver.query(ContentResolver.java:357) 
08-06 15:33:23.544: W/System.err(22083): at android.content.ContentResolver.query(ContentResolver.java:316) 
08-06 15:33:23.544: W/System.err(22083): at android.support.v4.content.CursorLoader.loadInBackground(CursorLoader.java:49) 
08-06 15:33:23.544: W/System.err(22083): at ua.mirkvartir.android.frontend.AddFillActivityApp.getRealPathFromURI(AddFillActivityApp.java:842) 
08-06 15:33:23.544: W/System.err(22083): at ua.mirkvartir.android.frontend.AddFillActivityApp.onActivityResult(AddFillActivityApp.java:733) 
08-06 15:33:23.544: W/System.err(22083): at android.app.Activity.dispatchActivityResult(Activity.java:5436) 
08-06 15:33:23.544: W/System.err(22083): at android.app.ActivityThread.deliverResults(ActivityThread.java:3188) 
08-06 15:33:23.544: W/System.err(22083): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2592) 
08-06 15:33:23.544: W/System.err(22083): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2633) 
08-06 15:33:23.544: W/System.err(22083): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2100) 
08-06 15:33:23.544: W/System.err(22083): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3563) 
08-06 15:33:23.544: W/System.err(22083): at android.app.ActivityThread.access$700(ActivityThread.java:135) 
08-06 15:33:23.544: W/System.err(22083): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1207) 
08-06 15:33:23.544: W/System.err(22083): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-06 15:33:23.552: W/System.err(22083): at android.os.Looper.loop(Looper.java:137) 
08-06 15:33:23.552: W/System.err(22083): at android.app.ActivityThread.main(ActivityThread.java:4849) 
08-06 15:33:23.552: W/System.err(22083): at java.lang.reflect.Method.invokeNative(Native Method) 
08-06 15:33:23.552: W/System.err(22083): at java.lang.reflect.Method.invoke(Method.java:511) 
08-06 15:33:23.552: W/System.err(22083): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
08-06 15:33:23.559: W/System.err(22083): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 
08-06 15:33:23.559: W/System.err(22083): at dalvik.system.NativeStart.main(Native Method) 

編輯我做了5個手機的測試和evrything工作正常。只有LG手機導致問題。 編輯:我試圖使用光標加載器,而不是託管查詢。同樣的問題

+1

你能張貼'getRealPathFromURI()'方法的代碼? – Vikram

+0

要賭一個'mCapturedImageURI'爲空 – Blundell

+0

我發現realpath :),假設它爲null,爲什麼它只在我的三個設備中的一個爲空?) – Yarh

回答

2

,如果你想知道爲什麼它不工作在某些設備上的任何問題,有些設備沒有:

,你可能會看到 - 相機應用是不一樣的應用程序。實際上,每個相機應用程序都是完全不同的,即使是與您的股票一起出現的應用程序。

這是什麼和你的問題? - 沒有人阻止對MediaStore.ACTION_IMAGE_CAPTURE作出反應的應用程序完全忽略MediaStore.EXTRA_OUTPUT意圖附加。

您的代碼假定應用程序已被用戶選擇(或安裝的默認相機應用程序)將確保將捕獲的圖像存儲在指定的路徑中。不幸的是,我從經驗中知道它並不總是如此。

悲傷但真實。如果您認爲用戶使用此類相機應用或特定設備(如LG系列默認相機應用),則不能指望MediaStore.EXTRA_OUTPUT

在這種情況下,也許你可以通過@Arun C Thomas提供的方法獲得圖像,但是因爲我傷心 - getData()不一定會給你帶來任何東西,如果相機應用程序沒有存儲數據本身結果。

這就是爲什麼你必須varify空,或做一些「的try/catch」,以防止你的應用程序崩潰在這個情況下...

0

大多是光標返回的是null所以當您試圖獲取column_index時它會崩潰。

Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
相關問題