更改 phone 铃声 android

Changing phone ringtone android

我的 SD 卡上有一个 mp3 文件 "a.mp3"。我想将其设置为我的 phone 铃声..... 下面是我从不同答案中找到的代码,但是当我 运行 代码时,铃声变为 None,而不是一个.mp3。请帮我。我是初学者。提前致谢。

String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/a.mp3";
    File k = new File(path, "a.mp3");

    ContentValues values = new ContentValues();
    values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
    values.put(MediaStore.MediaColumns.TITLE, "A");
    values.put(MediaStore.MediaColumns.SIZE, 210341);
    values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg");
    values.put(MediaStore.Audio.Media.ARTIST, "");
    values.put(MediaStore.Audio.Media.DURATION, 230);
    values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
    values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
    values.put(MediaStore.Audio.Media.IS_ALARM, false);
    values.put(MediaStore.Audio.Media.IS_MUSIC, false);

    // Insert it into the database
    Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
    Uri newUri = this.getContentResolver().insert(uri, values);

    RingtoneManager.setActualDefaultRingtoneUri(FirstActivity.this, RingtoneManager.TYPE_RINGTONE, newUri);

另外如果我想让用户选择其他铃声,我该怎么办?我想启动一个 Intent(它将打开文件资源管理器),然后我将获取该声音文件的路径。我将把它保存在路径字符串中并继续相同的代码。请指导我如何开始这个意图。

用于启动文件资源管理器并让用户选择您可以在 Intent 下方使用的文件-

      Intent intent = new Intent();
      intent.setAction(Intent.ACTION_GET_CONTENT);
      intent.setType("file/*");
      startActivity(intent);

检查 铃声问题。

这段代码对我有用。

Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
                    getContentResolver().delete(uri, MediaStore.MediaColumns.DATA
                            + "=\"" + file.getAbsolutePath() + "\"", null);
Uri newUri = getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(FileActivity.this,
                            RingtoneManager.TYPE_RINGTONE, newUri);

可能是铃声管理器将 uri 插入数据库,如果该数据库已经有 uri,那么它将 return 为空。您需要做的就是先删除uri,然后再插入。