この質問はこの質問と重複している可能性がありますが、コードに違いがあるため、新しい質問を追加しました。
問題は、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>