2016-11-26 2 views
1

Ich versuche, ein Foto in der Kamera meines Geräts zu machen, wenn ich die Methode, die die Bilderfassung behandelt die App abstürzt wegen einer Nullpointer-Ausnahme. Ich weiß nicht, welche Informationen mit meinem FileProvider fehlen, da der StackTrace den Nullzeiger in meine FileProvider.getUriForFile-Anweisung verweist.FileProvider.getUriForFile gibt null

Hier ist mein Code 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> 

Wie kann ich dieses Problem beheben?

Antwort

0

Verwenden Kamera Vorsatz

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

in onActivityResult()

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

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

Es hängt auch von der Kamera-App wird mit dem Benutzer. Mit Android-Kamera wird es gut funktionieren. Aber für andere Apps hängt es davon ab, ob sie einen gültigen Wert für Daten zurückgeben oder nicht.