我正在尝试修复此错误,但我有点看不到它来自哪里。
从创建新用户的片段中,我正在调用另一个片段对话框(在图像按钮单击上(,这使我能够从相机或图库中选择照片。图库工作正常,但相机不能。在这一行中:
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>
元素。具体来说,此代码会生成info
的null
值:
final ProviderInfo info = context.getPackageManager()
.resolveContentProvider(authority, PackageManager.GET_META_DATA);
(其中context
是要getUriForFile()
的第一个参数,authority
是要getUriForFile()
的第二个参数(
确保提供的授权字符串与<provider>
元素匹配。