这是一个简单的问题,也许有一个简单的答案,但是需要大量的背景知识。
问题:在API 23中,setActualDefaultRingtoneUri()
是否仍然有效?因为我无法让它正常工作。
背景:
我已经使用AndroidManifest.xml
进行了设置。
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
该应用程序使用以下代码自动分配权限。
public void desirePermissionCode()
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.System.canWrite(this)) {
new AlertDialog.Builder(this)
.setMessage("Please Assign Meep Meep Write Permissions")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(intent);
} catch (Exception e) {
Log.e("MainActivity", "error starting permission intent", e);
}
}
})
.show();
return;
}
}
我随后会展示一个简单的两个按钮的演示:其中一个是这样的(不起作用)
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/raw/meepmeep");
grantUriPermission("com.android.systemui", uri,
Intent.FLAG_GRANT_READ_URI_PERMISSION);
RingtoneManager.setActualDefaultRingtoneUri(
MainActivity.this,
RingtoneManager.TYPE_RINGTONE,
uri
);
并且有一个这样的(能够工作)
MediaPlayer mpintro;
mpintro = MediaPlayer.create(me, Uri.parse("android.resource://"+getPackageName()+"/raw/meepmeep"));
mpintro.start();
有人能解释一下,为什么当添加了两个权限并且 meepmeep.mp3
在 res 文件夹中时,应用程序触发播放声音的事件,但不能将铃声指定为 RingtoneManager.setActualDefaultRingtoneUri
?