我想简单地设置铃声.我不想给WRITE_SETTINGS许可,我可以找到大部分答案给予WRITE_SETTINGS的许可,但有一个我正在使用的应用程序没有任何WRITE_SETTINGS权限来设置铃声
https://play.google.com/store/apps/details?id=com.atomic.apps.ringtone.cutter
当你安装这个应用程序时,它永远不会明确地询问权限android.permission.WRITE_SETTINGS(也在marshmallow)
这是从存储中选择铃声的方法
public void pickRingtone()
{
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Ringtone");
Uri urie = RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, urie);
startActivityForResult(intent, REQUEST_CODE);
}
Run Code Online (Sandbox Code Playgroud)
//这里我要设置铃声
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK)
{
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (uri != null)
{
String ringTonePath = uri.toString();
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, uri);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=5, result=-1, data=Intent { dat=content://com.mi.android.globalFileexplorer.myprovider/external_files/Download/Amazing …Run Code Online (Sandbox Code Playgroud)