この質問はthis questionと重複する可能性がありますが、コードに若干の違いがあるので、私は新しい質問をします。なぜRingtoneManager.setActualDefaultRingtoneUriがうまくいかなかったのですか? [アンドロイドAPI-8]
RingtonePickerでピックアップされた着信音を設定できないという問題があります。私はSupport LibraryとAndroidAnnotationsを使用しています。おそらくそれはそのような問題を引き起こす可能性があります(私はそれは疑いますが)。
ボタンが付いた断片があります。ボタンをクリックすると、RingtonePickerが起動します。ユーザーは着信音を選択し、アプリケーションはそれをSharedPreferenceに保存します。次回ユーザーがRingtonePickerを開くと、以前に選択した着信音をチェックする必要があります。ここで
は私の断片は、二つの単語の質問に
@EFragment(R.layout.pref_page)
public class PrefPage extends Fragment {
@Pref
MyPrefs_ myPrefs;
@Click(R.id.ringtone_button)
public void onClick() {
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
RingtoneManager.TYPE_NOTIFICATION);
String uri = myPrefs.beepUri().get();
if (uri != "") {
Log.i("Log", "uri is " + uri);
RingtoneManager.setActualDefaultRingtoneUri(
getActivity(),
RingtoneManager.TYPE_NOTIFICATION,
Uri.parse(uri));
}
startActivityForResult(intent, 1);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == -1) {
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (uri != null) {
String uriString = uri.toString();
Log.i("Log", "uriString is " + uriString);
myPrefs.edit().beepUri().put(uriString).apply();
}
}
}
}
である - RingtoneManager.setActualDefaultRingtoneUriはここで働いていない理由?
更新日:
を、私は私のマニフェストでWRITE_SETTINGS権限を持っています。
<uses-permission android:name="android.permission.WRITE_SETTINGS" ></uses-permission>
この質問は少し古くなっていますが、問題が解決しなかった場合は、今すぐ着信音を設定する経験があります。あなたが持っていたエラーを投稿したい場合や、なぜそれが機能していないのか説明を付けることができれば、私は助けてくれるでしょう。さもなければ、私はこの質問への答えを見たいと思う。 –
@Paradopolisいいえ、私は誤りを抱えていませんでした。なぜこの方法がうまくいかないのか誰も知らなければ、私は作業コードの一部を期待しています。 –
@VitaliiKorsakov:おそらく ' 'が必要です。詳細については、[here](http://developer.android.com/reference/android/Manifest.permission.html#MODIFY_AUDIO_SETTINGS)を参照してください。根っこのルートになっていないデバイスやエミュレータでコードをテストしていますか? –
ChuongPham