我开发了一款用于更改铃声的Android应用程序。它运作得很好,但有一件事困扰我。
当我将铃声设置为通知音时,它会在我收到短信时播放。但是,如果我在短信设置中提前选择了自定义短信铃声(即默认激活的“默认铃声”以外的任何其他内容),则在收到短信时将无法播放新的通知音。
这可能导致某人从Android市场安装铃声应用程序,设置通知音并失望,因为所选通知在收到短信时无法播放。解决方案非常简单(短信 - >设置 - >选择铃声 - >默认铃声),但如果他不知道这一点,那真的很麻烦。
这是我用来设置通知音的方法:
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
.....
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, persistentUri);
答案 0 :(得分:1)
除非以root用户身份执行此操作,否则无法执行此操作。
库存MMS / SMS应用程序使用的铃声存储在自己的shared_preferences中。因为每个shared_preference只能由其所有者访问(这是由android强制执行的,除非你是root用户),这根本不可能。
如果你有一个有根电话(或者只是使用模拟器),你可以自己查找一下,并通过/data/data/com.android.mms/shared_prefs/com.android.mms_preferences.xml
查看设备上的adb shell
。
它包含应用程序使用的shared_preferences,还包含一个包含内容URI的密钥pref_key_ringtone
。
编辑:
我还没有确认这一点,但我认为pref_key_ringtone
的默认值将设置为Settings.System.DEFAULT_NOTIFICATION_URI。这将在播放时路由到系统默认通知声音。当用户未更改此设置时,您的解决方案将起作用。