我有问题。我想让我的应用程序的用户使用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()'
答案 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接收数据。快乐的编码!