web-dev-qa-db-ja.com

RingtoneManager.ACTION_RINGTONE_PICKERで着信音を設定する方法

私はここで解決策を見つけようとしましたが、ピッカーを呼び出すときのコードではなく、自分のファイルまたは選択されたファイルの解決策しかありません。ユーザーがボタンを押すと、次のコードが使用されます。

Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select ringtone for notifications:");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION);
ActivityCurrent.this.startActivityForResult(intent,999);

このショーの着信音ピッカー、ユーザーは着信音の希望を選択できますが、2つのことを逃しています:-開いたときに現在の着信音が表示されない-OKをクリックしても着信音が保存されない


まだ選択されている現在の着信音でRINGTONE_PICKERを開く方法がまだ見つかりません。何か案が?

Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select ringtone for notifications:");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION);
ActivityCurrent.this.startActivityForResult(intent,999);
20
Michalsx

ユーザーの選択から結果を受け取るには、onActivityResult()を実装して保存する必要があります。

if (resultCode == RESULT_OK) {
    Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
    if (uri != null) {
    String ringTonePath = uri.toString();
}

ここに例: http://www.ceveni.com/2009/07/ringtone-picker-in-Android-with-intent.html

編集:更新

RingtoneManager.setActualDefaultRingtoneUri(
    myActivity,
    RingtoneManager.TYPE_RINGTONE,
    uri);

これを呼び出す必要があります:)

20
Pete Houston
_Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtone);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, ringtone);
startActivityForResult(intent , 1);
_

「ringtone」は、選択したトーンをonActivityResult()に保存するURIです。

_@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
        case 1:
            ringtone = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);

            // Toast.makeText(getBaseContext(),RingtoneManager.URI_COLUMN_INDEX,
            // Toast.LENGTH_SHORT).show();
            break;

        default:
            break;
        }
    }
}
_

お役に立てば幸いです。ヒットした場合は回答がヒットします。

13

このコードは、着信音ピッカーの使用時にユーザーが以前に設定したデフォルトの着信音を表示します。

着信音の意図のためにボタンで以下のコードを使用してください。

public void pickRingtone(View view) {
        // TODO Auto-generated method.   stub

        Intent intent = new.       Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
                RingtoneManager.TYPE_RINGTONE);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Ringtone");

    // for existing ringtone
        Uri urie =     RingtoneManager.getActualDefaultRingtoneUri(
                getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, urie);

    startActivityForResult(intent, 5);
}
4

コードは完璧で、私にとってはうまくいきます。しかし、必要な権限について言及するのを忘れていました。このコードを試してください..それが役に立てば幸い

<uses-permission Android:name="Android.permission.WRITE_SETTINGS" ></uses-permission>
  <uses-permission Android:name="Android.permission.CHANGE_CONFIGURATION" ></uses-permission>
  <uses-permission Android:name="Android.permission.MODIFY_AUDIO_SETTINGS" ></uses-permission>
4
Bala Vishnu