【问题标题】:How can I get default ringtone uri如何获取默认铃声 uri
【发布时间】:2018-03-15 09:42:02
【问题描述】:

我需要有默认铃声的 URI。

我可以使用此代码获得默认铃声

            Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
            Ringtone rt = RingtoneManager.getRingtone(context,uri);

在 rt(铃声)中,我可以看到屏幕截图中的 mUri,但它不是公共财产,所以我不能拥有它。

我怎样才能拥有该属性?

注意:RingtoneManager.java 中有一个 getUri 但它是隐藏的。

/** {@hide} */
public Uri getUri() {
    return mUri;
}

【问题讨论】:

  • 不重复。我需要别的东西。
  • 可以使用反射访问mUri字段
  • 你到底在问什么? mUri 字段是您刚刚传递给 RingtoneManager.getRingtone() 调用的 Uri
  • 无论如何,正如 Arpan ßløødy ßadßøy 所建议的,您可以通过反射获得该字段:Field f = Ringtone.class.getDeclaredField("mUri");f.setAccessible(true);Uri uri = (Uri) f.get(rt);。看看它给了你什么。

标签: java android ringtone


【解决方案1】:
Uri defaultRingtoneUri = RingtoneManager.getActualDefaultRingtoneUri(getActivity().getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
Ringtone defaultRingtone = RingtoneManager.getRingtone(getActivity(), defaultRingtoneUri);

希望这对你有用! :)

【讨论】:

    【解决方案2】:
    public void RingtonesList() {
      RingtoneManager manager = new RingtoneManager(this);
      manager.setType(RingtoneManager.TYPE_RINGTONE);
      Cursor cursor = manager.getCursor();
      while (cursor.moveToNext()) {
        String title = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX);
        String uri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX);
        // Do something with the title and the URI of ringtone
    Log.d("URI",""+uri);
      }
    }
    
    Also give permission
    
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
    

    【讨论】:

    • 这会返回 content://media/internal/audio/media 但我需要有 content://media/internal/audio/media/110
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多