2017-12-27 34 views
-1

FileProvider.getUriForFile gibt eine Nullobjektreferenz zurück, und ich habe keine Ahnung warum. Das hat vorher funktioniert. Der folgende Fehler ist, was ich bekomme. Ich habe auch meinen Code unterhalb des Fehlers hinzugefügt.FileProvider.getUriForFile gibt Nullobjektverweis zurück

Process: com.example.joche.mywarranty, PID: 2522 
                     java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference 
                      at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:584) 
                      at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:558) 
                      at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400) 
                      at com.example.joche.mywarranty.InputScreen$2.onClick(InputScreen.java:74) 
                      at android.view.View.performClick(View.java:5610) 
                      at android.view.View$PerformClick.run(View.java:22265) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6077) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) 

Code:

imageUri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".my.package.inputName.provider", new File(fileinputName)); 

AndroidManifest.xml Datei:

<provider 
     android:name=".GenericFileProvider" 
     android:authorities="${applicationId}.my.package.name.provider" 
     android:exported="false" 
     android:grantUriPermissions="true"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/provider_paths"/> 
    </provider> 

Und ofcours die XML-Datei mit dem Pfad:

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

Ich bin nicht einverstanden mit der doppelten Frage ** Was ist Nullpointer ** da die OP wusste, dass das Objekt null war, als er sagte: „FileProvider.getUriForFile eine nullobject Referenz zurückkehrt und ich habe keine Ahnung warum. " Die Frage war eher "Warum die Methode null zurückgibt" –

Antwort

1

Im Manifest Sie es erklären als android:authorities="${applicationId}.my.package.name.provider"

und Sie versuchen, es als einen anderen Namen zu verwenden: context.getApplicationContext().getPackageName() + ".my.package.inputName.provider"

Beide müssen übereinstimmen. Wählen Sie ein und nutzen auf beiden Plätze: .my.package.name.provider oder .my.package.inputName.provider

+0

Danke! Das hat es gelöst. – Jochem

+0

Kein Problem, froh zu helfen! Als Antwort markieren, wenn du kannst =) –

Verwandte Themen