从用户那里获取uri时我的应用程序崩溃了

时间:2017-10-18 11:43:45

标签: java android

我有问题。我想让我的应用程序的用户使用ACTION_GET_CONTENT从存储中选择一个音频文件,然后我的mainActivity崩溃了。

       public void onClick(View v) {
            Intent intent = new Intent();
            intent.setType("audio/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(intent,1);
            audioPath = intent.getData().getPath(); //This is were the crash happens
            audio = Uri.parse(audioPath);

        }

我是android编程的新手,肯定有些东西我无法理解。错误如下:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.String android.net.Uri.getPath()'

1 个答案:

答案 0 :(得分:1)

您必须覆盖活动中的活动结果。 不要使用与您相同的意图。您必须使用Intent方法中返回的onActivityResult。所以你的代码应该是:

这应该是您选择音频的方法

    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setType("audio/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent,1); //This 1 is your request code remember it
    }

然后将onActivityResult方法覆盖为

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
       //The intent from this method is the one you need to get data from!
       if (requestCode == 1) {
       // Make sure the request was successful
            if (resultCode == RESULT_OK) {
               audioPath = intent.getData().getPath(); 
               audio = Uri.parse(audioPath);
              }
        }
     }

有关此方法的详细信息以及从活动结果check this official training from Android接收数据。快乐的编码!