gpt4 book ai didi

java - RingtoneManager.setActualDefaultRingtoneUri() 在 API 23 中工作吗?

转载 作者:太空狗 更新时间:2023-10-29 14:44:02 24 4
gpt4 key购买 nike

这是一个简单的问题,可能也是一个简单的答案,但有大量的上下文。

问题 setActualDefaultRingtoneUri() 是否仍然适用于 API 23?因为我无法让它发挥作用

上下文:我已经设置了 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;
}
}

然后我有一个简单的 2 按钮演示:一个带有这个(不起作用)

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();

有人可以向我解释为什么当添加了 2 个权限时,meepmeep.mp3 位于 res 文件夹中,那么为什么事件会触发以在应用程序中播放声音而不是在 RingtoneManager.setActualDefaultRingtoneUri

中分配铃声

最佳答案

请引用此链接:

https://developer.android.com/reference/android/Manifest.permission.html#WRITE_SETTINGS

如果应用以 API 级别 23 或更高级别为目标,则应用用户必须通过权限管理屏幕明确向应用授予此权限。该应用程序通过发送带有操作 ACTION_MANAGE_WRITE_SETTINGS 的 Intent 来请求用户的批准。应用程序可以通过调用Settings.System.canWrite()来检查自己是否有这个授权。

请不要使用 startActivity(intent),而是使用 startActivityForResult 来听取 MANAGE_WRITE_SETTINGS Activity 的反馈。在onActivityResult方法中,可以查看request code,再次查看Settings.System.canWrite,如果现在有写入权限,那么需要重新设置铃声,这个不是自动的。

关于java - RingtoneManager.setActualDefaultRingtoneUri() 在 API 23 中工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42808241/

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