【问题标题】:how to get sms ringtone in android如何在android中获取短信铃声
【发布时间】:2015-11-24 10:25:26
【问题描述】:

我想开发一个消息应用程序。在这个消息应用程序中,用户可以更改默认的短信铃声。为此,我必须在对话中显示所有短信铃声。 每当用户选择短信铃声时,短信铃声的名称将在文本视图中设置,铃声将设置为默认短信铃声。我怎样才能做到这一点 ?

【问题讨论】:

    标签: android notifications sms ringtone


    【解决方案1】:

    无论你做什么。这段代码肯定会做你想做的事!!

    selsound_button.setOnClickListener(new OnClickListener()
    {   
        public void onClick(View arg0)
        {
            Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
            Uri currenturi = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 1l);
            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);
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currenturi);
            startActivityForResult( intent, 999);   
        }
    });
    
    
    RingtoneManager.setActualDefaultRingtoneUri(
    myActivity, RingtoneManager.TYPE_RINGTONE, currenturi);  
    

    添加清单文件是必须的

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

    uri 不是 rigntone 的名字

    Ringtone ringtone = RingtoneManager.getRingtone(this, uri); 
    String title = ringtone.getTitle(this);
    

    用它来方便你

    【讨论】:

    • 什么是 currenturi ?我必须在 onActivityResult 中写什么代码?
    • 我已经编辑了...不管你需要做什么,你必须做onActivityResult
    • 如何将此铃声设置为默认短信铃声?
    • 我在设置默认铃声时遇到了异常。
    【解决方案2】:

    试试这个:

    Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(getActivity().getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
    Ringtone defaultRingtone = RingtoneManager.getRingtone(getActivity(), defaultRintoneUri);
    

    【讨论】:

      【解决方案3】:

      我会为用户提供一个偏好屏幕。 Ritones有一个特殊条目:&lt;RingtonePreference /&gt;

      <PreferenceScreen>
          <RingtonePreference
               android:title="Current Ringtone"
               android:key="ring" />
      </PreferenceScreen>
      

      使用该属性后,rintone 将使用密钥ring 保存在您的首选项中。

      如果您不想使用首选项屏幕,您可以使用上面 ui 内部使用的意图:

      Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
      startActivityForResult(intent, 4711);
      

      以结果代码开始该意图,并在您的 onActivityResult 中检查它,如下所示:

      public void onActivityResult(int requestCode, int resultCode, Intent data) {
          if(requestCode == 4711) {
              if(data != null) {
                  Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
                  if(uri != null) {
                      yourTextView.setText(uri);
                  }
              }
          }
      }
      

      【讨论】:

      • 您从未使用过偏好设置屏幕?
      • 不,我从不使用偏好设置。
      • 在这种情况下,请在documentation 中了解它们,请使用新的compat library
      • 如何获取短信铃声列表?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2014-04-25
      • 2013-10-11
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      相关资源
      最近更新 更多