2016-11-26 28 views
1

nullpointer例外のためにアプリケーションがクラッシュするイメージキャプチャを処理するメソッドを呼び出すときに、デバイスのカメラで写真を撮ろうとしています。 StacktraceがFileProvider.getUriForFileステートメントにnullpointerを指しているため、私のFileProviderでどの情報が欠落しているのかわかりません。FileProvider.getUriForFileがnullを返す

ここに私のコード HomeActivity

public void takePhoto(View view){ 
     //camera stuff 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 

     //folder stuff 
     File imagesFolder = new File(Environment.getExternalStorageDirectory(), "AnimEncylopedia"); 
     if(!imagesFolder.exists()) { 
      imagesFolder.mkdirs(); 
     } 

     File image = new File(imagesFolder, "QR_" + timeStamp + ".png"); 


Uri uriSavedImage = FileProvider.getUriForFile(HomeActivity.this, "com.encyclopedia.fileprovider", image); 

     intent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 
     startActivityForResult(intent, 1); 
    } 

AndroidManifest

<provider 
      android:authorities="com.encyclopedia.fileprovider" 
      android:name="android.support.v4.content.FileProvider" 
      android:exported="false" 
      android:grantUriPermissions="true"> 

      <meta-data 
       android:name="android.support.FILE_PROVIDER_PATHS" 
       android:resource="@xml/file_paths"/> 

     </provider> 

Files_path.xml

<?xml version="1.0" encoding="utf-8"?> 
<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
    <external-path name="my_images" path="Encyclopedia/"/> 
</paths> 

私はこれをどのように修正することができますですか? onActivityResult()

Bitmap photo = (Bitmap) data.getExtras().get("data"); 

Uri tempUri = getImageUri(getActivity(), photo); 

答えて

0

使用カメラ意図

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, REQUEST_CAMERA); 

また、ユーザーが使用しているカメラアプリに依存します。アンドロイドカメラで正常に動作します。しかし、他のアプリでは、データの有効な値を返すかどうかによって異なります。