首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ACTION_RINGTONE_PICKER的意图中提取Uri

如何从ACTION_RINGTONE_PICKER的意图中提取Uri
EN

Stack Overflow用户
提问于 2018-10-04 14:18:15
回答 1查看 398关注 0票数 0

最近,我开始使用AndroidStudio3.1.2和SDK 19编写我真正的第一个android项目。

我的一个片段通过意图使用Intent(RingtoneManager.ACTION_RINGTONE_PICKER)打开铃声选择器,这样用户就可以选择铃声,然后将该Uri保存到SharedPreferences。选择器将按预期打开,但在选择铃声并按ok后,将得到以下RuntimeException:

代码语言:javascript
复制
java.lang.RuntimeException: Failure delivering result ResultInfo
{who=null, request=65537, result=-1, data=Intent { (has extras) }} to activity 
{com.procra.myProject/com.procra.myProject.Activities.MainActivity}: 
java.lang.NullPointerException: uriString

当获取选择器的结果时,我将结果的意图传递给我的SettingsHandler,其中setNotificationRingtone()应该注意选定的音调,如下所示:

代码语言:javascript
复制
public synchronized static void setNotificationRingtone(Context context, Intent data) {
    SharedPreferences sharedPreferences = context.getSharedPreferences(NOTIFICATION_SETTINGS, Context.MODE_PRIVATE);
    sharedPreferences.edit().putString(NOTIFICATION_RINGTONE_URI , data.getStringExtra("uriString")).apply();
    //this is the one I suspect to be the troublemaker
    RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_NOTIFICATION, Uri.parse(data.getStringExtra("uriString")));
}

如果我得到了正确的答案,我就误解了意图data的结构,onActivityResult()方法返回。我试图在这里找到一个可以理解的答案,但没有一个与我的问题完全相符。

如果有人能解释一下,我会很感激的:如何正确地从意图中提取结果,以及如何将相应的数据从意图解析到Uri。前面谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-04 14:42:15

来自docs:PICKER

输出: EXTRA_RINGTONE_PICKED_URI。

所以将data.getStringExtra("uriString")替换为data.getStringExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)

要验证将调试器-断点放入onActivityResult,并使用调试器检查返回的意图

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52649017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档