これは簡単な質問ですが、おそらく簡単な答えですが、膨大な量の文脈があります。RingtoneManager.setActualDefaultRingtoneUri()はAPI 23で動作しますか?
質問:はsetActualDefaultRingtoneUri()
はまだAPI 23で動作しますか?私はそれがコンテキスト
に機能するために得ることができないので: 私は
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
でAndroidManifest.xml
を設定しているアプリの自己は、このコード
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;
}
}
Iと権限を割り当てシンプルな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
);
、これと1(ない仕事)
MediaPlayer mpintro;
mpintro = MediaPlayer.create(me, Uri.parse("android.resource://"+getPackageName()+"/raw/meepmeep"));
mpintro.start();
2つの権限が追加され、meepmeep.mp3
はRESフォルダ内にある、なぜイベント火災がプレイしない時に、なぜ、誰かが私に説明することができますアプリで音ではなくRingtoneManager.setActualDefaultRingtoneUri
はいコード例は「はっきり」私がこれをやっていることを示していますが、うまくいきません。 –
@MrHeelis startActivity(intent)は使用しないでください。代わりにstartActivityForResultを使用してMANAGE_WRITE_SETTINGSアクティビティのフィードバックを聞いてください。 onActivityResultメソッドでは、リクエストコードをチェックしてSettings.System.canWriteを再度チェックすることができます。書き込み権限があれば、着信音を再度設定する必要があります。これは自動ではありません。 – Hexise
@MrHeelis btw、生のリソースの代わりに携帯電話の外部ストレージから着信音を設定できますか?これが問題なのかどうかはわかりません。 – Hexise