gpt4 book ai didi

Android:传递结果 ResultInfo 失败。 Intent 显然是空的?

转载 作者:行者123 更新时间:2023-11-29 18:10:04 27 4
gpt4 key购买 nike

我试图让用户选择一个音频文件 并存储该音频文件的路径。我这样做是通过使用 ACTION_GET_CONTENT Intent,这样用户就可以选择一个应用程序来选择文件。但出于某种原因,在 onActivityResult 方法中,Intent 数据 返回为 null,如错误消息中所示。 Logcat错误信息和相关代码如下。任何帮助将不胜感激。

主要编辑:- 此错误仅在我按下后退按钮或取消时发生!选择一个音乐文件实际上工作正常。对于那个很抱歉。尽管如此,错误仍然存​​在。

LogCat 错误:-

06-26 16:36:25.238: E/AndroidRuntime(24759): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {com.packagename.appname.activityname}: java.lang.NullPointerException

调用放置在 onCreate() 中调用的方法中的选择器 Activity :-

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setAction(Intent.ACTION_PICK);
intent.setType("audio/*");
startActivityForResult(intent, audioreminder);

onActivityResult() 方法:-

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
SharedPreferences flags = this.getSharedPreferences(
"screen_on_flags", MODE_WORLD_READABLE);
SharedPreferences.Editor editor = flags.edit();
String FilePath = data.getData().getPath();
switch (requestCode) {
case audioreminder: {
if (resultCode == RESULT_OK) {
editor.putString("audioreminderpath", FilePath);
editor.commit();
} else if (resultCode == RESULT_CANCELED){
CheckBoxPreference other_audioreminder = (CheckBoxPreference) findPreference("other_audioreminder");
other_audioreminder.setChecked(false);
}
break;
}
}
}

最佳答案

我用过,这段代码..

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(Intent.createChooser(intent, "Gallery"), audioreminder);

此外,在 onActivityResult() 中检查 Intent data 是否为 null

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if(data != null)
{
SharedPreferences flags = this.getSharedPreferences(
"screen_on_flags", MODE_WORLD_READABLE);
SharedPreferences.Editor editor = flags.edit();
String FilePath = data.getData().getPath();
switch (requestCode) {
case audioreminder: {
if (resultCode == RESULT_OK) {
editor.putString("audioreminderpath", FilePath);
editor.commit();
} else if (resultCode == RESULT_CANCELED){
CheckBoxPreference other_audioreminder = (CheckBoxPreference) findPreference("other_audioreminder");
other_audioreminder.setChecked(false);
}
break;
}
}
}
else
{
Log.e("Intent data:" , "null")
}
}

试试这个,让我知道会发生什么......

关于Android:传递结果 ResultInfo 失败。 Intent 显然是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207617/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com