Я пытаюсь установить мелодию звонка из звука, сохраненного на SD-карту из моего приложения.После просмотра каждого сообщения, которое я мог найти по этому вопросу, я думаю, что я близок, и просто не определяю право URI.
File ringPath = new File(path, filename);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, ringPath.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "temptitle");
values.put(MediaStore.MediaColumns.SIZE, ringPath.length());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg");
values.put(MediaStore.Audio.Media.ARTIST, "tempartist");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
uri = Uri.fromFile(ringPath);
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, uri);
Обычно URI определяется как:
Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringPath.getAbsolutePath());
Uri newUri = main.getContentResolver().insert(uri, values);
Но я не совсем понял смысл во всем этом, и это дало мне довольно неприятные ошибки (не то, чтобы они были, вероятно, немного хуже, чем моя текущая).Я уверен, что это обязательный способ сделать это, но URI в моем коде на самом деле возвращает правильный путь (а другой нет, вероятно, из-за моего неправильного использования), поэтому я не понимаю, почему это не будетРабота.Хотя, честно говоря, я не вижу смысла в том, чтобы все равно использовать для этого URI, вместо того, чтобы указывать пути.
Если кто-нибудь может дать мне небольшое объяснение или связать меня где-нибудь, то ямог бы действительно понять это и обойти эту проблему, я был бы очень благодарен.