Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中获得铃声名称?_Java_Android_Android Intent_Android Notifications_Ringtone - Fatal编程技术网

Java 如何在Android中获得铃声名称?

Java 如何在Android中获得铃声名称?,java,android,android-intent,android-notifications,ringtone,Java,Android,Android Intent,Android Notifications,Ringtone,我允许我的用户在我的应用程序中为通知选择铃声。我想存储声音的URI以及人们可读的声音标题 到目前为止,URI代码工作得很好: Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); 但是当我试图获取标题,并将其设置为按钮文本时,我什么也得不到。似乎没有头衔 String title = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGT

我允许我的用户在我的应用程序中为通知选择铃声。我想存储声音的URI以及人们可读的声音标题

到目前为止,URI代码工作得很好:

Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
但是当我试图获取标题,并将其设置为按钮文本时,我什么也得不到。似乎没有头衔

String title = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_TITLE);
button.setText(title);
但是我的按钮文本是空的。如果我这样做:

button.setText(uri.toString());
然后,我完美地看到了uri。我是否应该尝试从URI获取标题?谢谢

这应该可以了:

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

有关文档,请参阅,但简短的故事是:Ringtone.getTitle(Context-ctx)

我对“MediaPlayer最终版未发布”有问题。我用这个:

Cursor returnCursor = getContentResolver().query(uri, null, null, null, null);
returnCursor.moveToFirst();
String title = returnCursor.getString(returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
returnCursor.close();

有关文档,请参阅。

我个人在尝试接受的答案时遇到了严重的性能问题,仅加载包含30个铃声的列表大约需要2秒钟。我对它做了一点修改,它的工作速度快了10倍左右:

uri = ringtoneMgr.getRingtoneUri(cursor.getPosition());
ContentResolver cr = getContext().getContentResolver();
String[] projection = {MediaStore.MediaColumns.TITLE};
String title;
Cursor cur = cr.query(uri, projection, null, null, null);
    if (cur != null) {
        if (cur.moveToFirst()) {
            title = cur.getString(0);
            cur.close();

谢谢医生似乎总是让我着迷。阿列克谢·库兹涅佐夫你什么意思?