【问题标题】:How to set ringtone with RingtoneManager.ACTION_RINGTONE_PICKER?如何使用 RingtoneManager.ACTION_RINGTONE_PICKER 设置铃声?
【发布时间】:2011-12-02 01:35:57
【问题描述】:

我试图在这里找到解决方案,但只有自己/选择的文件的解决方案,而不是我调用选择器时的代码。当用户按下按钮时,我使用以下代码:

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);

这个显示铃声选择器,用户可以选择想要的铃声,但我错过了两件事: - 打开时不显示当前铃声 - 点击确定时不保存铃声


我仍然无法找到如何使用已选择的当前铃声打开 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);

【问题讨论】:

    标签: android set picker ringtone


    【解决方案1】:

    此代码将显示用户在使用铃声选择器时设置的默认铃声。

    在按钮中使用以下代码来获取铃声意图。

    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);
    }
    

    【讨论】:

    • 将此行添加到代码帮助我intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(strUri)); 这一行将现有的uri 传递给选择器`
    【解决方案2】:

    代码很完美,适合我。但是您忘记提及所需的权限..在这里。试试这个代码..希望它有帮助

    <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>
    

    【讨论】:

    • 在root设备上,你只需要android.permission.WRITE_SETTINGS权限。不过,不知道无根设备。
    • 哦!我不知道!谢谢你的信息..我的是无根的..所以我不得不把这三个都放在它的工作上
    【解决方案3】:
    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);
    

    “铃声”是我在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;
            }
        }
    }
    

    希望对您有所帮助。如果有,请点击回答。

    【讨论】:

    • 谢谢它正在工作但是如果我们在 RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI 中添加了我们的原始文件 uri,则在重新打开铃声选择器后不会选择默认声音的时间选择。
    • 你能告诉我吗
    【解决方案4】:

    您必须实现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);
    

    你必须这样称呼它:)

    【讨论】:

    • 谢谢,但这只是如何捕捉路径。但我看不到方法: - 如何保存此设置? - 打开时如何显示当前铃声?
    • 亲爱的 Xjaphx :) 非常感谢,你救了我 :) 这段代码可以按我的需要工作。
    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多