当前位置: 首页 > 知识库问答 >
问题:

我无法忘记java。使用文件提供程序类时android studio中的lang.NullPointerException

麻学博
2023-03-14

这是我的清单文件代码

<activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>
    </activity>

我的新资源xml文件的代码是

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

我的主要活动代码是

public class MainActivity extends Activity {

    private ImageView image;
    private final int CameraKey = 1;
    Context context = this;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button click_button = (Button) findViewById(R.id.button);
        image = (ImageView) findViewById(R.id.imageView3);

        click_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                File file = getFile();
                Uri apkURI = FileProvider.getUriForFile(
                        context,
                        context.getApplicationContext()
                                .getPackageName() + ".provider", file);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, apkURI);
                startActivityForResult(intent, CameraKey);

            }
        });
    }

    private File getFile(){
        File store = new File("sdcard/Digiwrite");
        if(store.exists()){
            store.mkdir();
        }

        File image = new File(store,"Images.jpg");
        return image;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == CameraKey && resultCode == RESULT_OK){
            String path = "sdcard/Digiwrite/Images.jpg";

            image.setImageDrawable(Drawable.createFromPath(path));

        }
    }

我不断地发现这个错误:

致命异常:主进程:com。穆克什。Androiddigiwrite,PID:30365 java。lang.NullPointerException:尝试调用虚拟方法“android”。所容纳之物res.XmlResourceParser。所容纳之物下午。ProviderInfo。在android上的空对象引用上加载XmlMetadata(android.content.pm.PackageManager,java.lang.String)。支持v4。所容纳之物文件提供者。android上的parsePathStrategy(FileProvider.java:583)。支持v4。所容纳之物文件提供者。android上的getPathStrategy(FileProvider.java:557)。支持v4。所容纳之物文件提供者。com上的getUriForFile(FileProvider.java:399)。穆克什。Android数码书写。主要活动1美元。android上的onClick(MainActivity.java:37)。看法看法android上的performClick(View.java:5637)。看法查看$PerformClick。在android上运行(View.java:22433)。操作系统。处理程序。android上的handleCallback(Handler.java:751)。操作系统。处理程序。android上的dispatchMessage(Handler.java:95)。操作系统。活套。android上的loop(Looper.java:154)。应用程序。活动线程。java上的main(ActivityThread.java:6186)。朗。反思。方法在com上调用(本机方法)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(ZygoteInit.java:889)。Android内部的操作系统。合子体。main(ZygoteInit.java:779)

我对Android Studio完全陌生。我尝试了各种可用的方法,但我不知道如何使文件提供程序工作。我能知道我哪里出错了吗?

我尝试使用文件在较低版本上运行此代码。getUri()方法,它工作正常。为了让它在更高版本上运行,我一直在尝试将其转换为使用文件提供程序。但是我被卡住了。请帮帮我。

共有3个答案

景明诚
2023-03-14

应用程序标记中尝试此操作

<application
        android:requestLegacyExternalStorage="true">
</application>

朱海超
2023-03-14

指定XML的路径需要包含路径而不是路径。将其更改为:

<?xml version="1.0" encoding="utf-8"?>
<path xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="."/>
</path>
皇甫波峻
2023-03-14

在xml文件中使用此权限。

<代码>

 类似资料:
  • manifest.xml提供商 资源文件 使用fileprovider 参考:此处 描述:我无法使用此文件提供程序打开图像、文本文件、pdf。当我打开文件文本文件时,它的give me ERR\u UNKNOWN\u URL\u方案。如果我打开图片或pdf,它什么都不显示

  • 当我在中包含LoginViewModelProviderModule时,我无法使用LoginViewModelProviderModule提供LoginViewModel,但当我在ActivityBuilderModule类的@Module注释中包含它时,它可以工作。 BaseApplicationComponent ActivityBuilderModule LoginViewModelProv

  • 本文向大家介绍F# 使用CSV类型提供程序,包括了F# 使用CSV类型提供程序的使用技巧和注意事项,需要的朋友参考一下 示例 给定以下CSV文件: 您可以使用以下脚本读取数据:            

  • 问题内容: 我正在为Jira编写一个插件,其中涉及XML文档的解析。我正在使用JAXB来做到这一点(将XML转换为pojos,反之亦然),所以有一个使用JAXB从pojos生成XML的类。看起来像… 提到的软件包将随JDK发行版(rt.jar)一起提供。因此,我没有继续进行其他任何课程。 当我使用“ java”从命令行启动它时,它工作正常。但是,当我将其打包为jar并将其作为插件放入Jira时,它

  • 代码如下: 这是我面临的错误: