代码之家  ›  专栏  ›  技术社区  ›  Grzegorz Brzęczyszczykiewicz

从DialogFragment调用FileProvider时出错-引用的空对象,

  •  0
  • Grzegorz Brzęczyszczykiewicz  · 技术社区  · 7 年前

    从创建新用户的片段中,我调用了另一个片段对话框(单击ImageButton),它使我能够从相机或图库中选择照片。画廊可以很好地工作,但相机不能。在这一行中:

     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
    

    cna的问题在哪里?

    当做 格热戈日

    编辑:

    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)
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   CommonsWare    7 年前

    FileProvider 找不到 <provider> android:authorities 值等于 getActivity().getPackageName() + ".provider" . 具体来说,此代码导致 null info :

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

    context 是第一个参数 getUriForFile() authority getUriForFile() )

    确保您提供的授权字符串与您的 < 要素