2017-09-14 10 views
1

アプリがあり、写真を撮ってからfirebaseにアップロードする必要があります。私は基本的に撮影した写真のウリパスが必要です。Androidで画像のファイルパスを取得する

私はGet file path of image on Androidを読みましたが、NullPointerExceptionに問題があります。

私の問題と上記の問題の主な違いは、私がフラグメントでそれをやっていることです。私はウリimgUriと一直線にNullPointerExceptionが取得

mTakePhotoButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_REQUEST); 
     } 
    }); 

は、ここに私のコードです。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) { 
      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      mImgView.setImageBitmap(photo); 
      Uri imgUri = getImageUri(getActivity().getApplicationContext(), photo); 
      mManager.setPhotoUri(imgUri); 
     } 
} 

ここで私がウリを取得する方法です。

private Uri getImageUri(Context inContext, Bitmap inImage) { 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
     String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null); 
     return Uri.parse(path); 
    } 

正確なエラーメッセージは、次のとおり

java.lang.RuntimeException:失敗の送達結果アンドロイド= ResultInfo {:断片:1、= 22222を要求し、結果= -1、 データ= {行為=インラインデータ(補足を有する)}} {.MainActivity}活性 意図: java.lang.NullPointerExceptionが:

をuriString Iは、任意の助けを理解するであろう。 E/AndroidRuntime com.example.radzik.recipes 18.448 16497から16497 /:

全体のエラー・ログ:

9月14日12:06に致命的な例外:メイン プロセス:com.example.radzik .recipes、PID:16497 java.lang.RuntimeException:結果の配信に失敗しました。ResultInfo {who =アンドロイド:フラグメント:1、リクエスト= 22222、結果= -1、データ=インテント{行=インラインデータ(エキストラあり)}}アクティビティ{com.example.radzik.recipes.contivity.MainActivity}:java.lang.NullPointerException: android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1393)でandroid.app.ActivityThread.-wrap16(ActivityThread.java) でandroid.app.ActivityThread.handleSendResult(ActivityThread.java:3742) で android.os.Handler.dispatchMessage(Handler.java:102) とandroid.os.Looper.loop(Looper.java:148) とandroid.app.ActivityThread.main(ActivityThread.java:5417) でのjava .lang.reflect.Method.invoke(ネイティブメソッド) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(Zygo (Uri.java:616) 原因:java.lang.NullPointerException:uriString android.net.Uri $ StringUri。(Uri.java:475) android.net.Uri $ StringUri(Uri.java) android.net.Uri.parse(Uri.java:437) at com.example.radzik.recipes.fragment.ChoosePhotoFragment.getImageUri(ChoosePhotoFragment.java:144) at com.example.radzik.recipes.fragment.ChoosePhotoFragment 。android.app.ActivityThread.handleSendResultでandroid.app.ActivityThread.deliverResults(ActivityThread.java:3695) でandroid.app.Activity.dispatchActivityResult(Activity.java:6452) でonActivityResult(ChoosePhotoFragment.java:135) ( ActivityThread.java:3742) android.app.ActivityThread.-wrap16(ActivityThread.java) (android.app.ActivityThread)$ H.handleMessage(ActivityThread.java:1393) at android.os.Handler.dispatchMessage(Handler .java:102) とandroid.os.Looper.loop(Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブメソッド) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616は)

+0

を依存を追加することを忘れないでください、あなたはまた、スタックフレームを含む全体のエラーログを投稿することができますか? – Sundeep

+0

私は完全なエラー –

+0

で私の質問を更新しました 'insertImage'呼び出しが' null'を返すように見えるので、 'path'は' null'です。 https://stackoverflow.com/questions/23059580/mediastore-images-media-insertimage-is-returning-null-when-trying-to-save-the-im – Sundeep

答えて

1

あなたの問題は、あなたが失敗した上にあった現在の活動の意図を取得しているbecasue getActivity()です。 コードをOnActivityResultに移動すると、これが機能します。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //first call super 
    super.onActivityResult(requestCode, resultCode, data); 

    //rest of your code 
} 

<uses-permission android:name="android.permission.CAMERA" /> 

および/またはなしで、あなたのアプリに

<uses-feature android:name="android.hardware.camera" /> 
+0

質問に間違いがありました。これはonActivityResultの中にあります。それを指摘してくれてありがとう! –

関連する問題