8

この質問はこの質問と重複している可能性がありますが、コードに違いがあるため、新しい質問を追加しました。

問題は、RingtonePicker で選択した着信音を設定できないことです。私はSupport LibraryAndroidAnnotationsを使用していますが、おそらくそのような問題が発生する可能性があります(疑いはありますが)。

ボタンが入ったフラグメントがあります。ボタンをクリックすると 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>
4

2 に答える 2

2

マニフェスト ファイルに設定への書き込み権限を指定する必要があります。

<uses-permission android:name="android.permission.WRITE_SETTINGS" ></uses-permission>

logcat の出力も投稿してください。

于 2012-11-12T23:27:58.433 に答える