从对话片段调用文件提供程序时出错 - 引用对象的空,



我正在尝试修复此错误,但我有点看不到它来自哪里。

从创建新用户的片段中,我正在调用另一个片段对话框(在图像按钮单击上(,这使我能够从相机或图库中选择照片。图库工作正常,但相机不能。在这一行中:

Uri photoUri = FileProvider.getUriForFile(globalContext, getActivity().getPackageName() + ".provider", getCameraFile());

我收到此错误:

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

所有数据都正确显示(我检查日志(。

问题可能出在哪里?

问候 格热戈兹

编辑:

全栈跟踪:

FATAL EXCEPTION: main
       Process: com.myapp.myapp, PID: 27523
       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:583)
           at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:557)
           at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:399)
           at com.myapp.myapp.utils.PictureDialog.onTakePhoto(PictureDialog.java:80)
           at com.myapp.myapp.utils.PictureDialog_ViewBinding$1.doClick(PictureDialog_ViewBinding.java:32)
           at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
           at android.view.View.performClick(View.java:5184)
           at android.view.View$PerformClick.run(View.java:20893)
           at android.os.Handler.handleCallback(Handler.java:739)
           at android.os.Handler.dispatchMessage(Handler.java:95)
           at android.os.Looper.loop(Looper.java:145)
           at android.app.ActivityThread.main(ActivityThread.java:5940)
           at java.lang.reflect.Method.invoke(Native Method)
           at java.lang.reflect.Method.invoke(Method.java:372)
           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)

FileProvider在清单中找不到android:authorities值等于getActivity().getPackageName() + ".provider"<provider>元素。具体来说,此代码会生成infonull值:

final ProviderInfo info = context.getPackageManager()
.resolveContentProvider(authority, PackageManager.GET_META_DATA);

(其中context是要getUriForFile()的第一个参数,authority是要getUriForFile()的第二个参数(

确保提供的授权字符串与<provider>元素匹配。

最新更新