Проблема с сохранением mp3 файлов во внутреннем хранилище - PullRequest
0 голосов
/ 07 марта 2020

Здравствуйте, я работаю над приложением мелодии звонка, и в моем приложении у меня есть много файлов мелодий звонка в моем приложении. Я загружаю файлы сохранения mp3 во внутреннее хранилище с кодом ниже:

   ContextWrapper contextWrapper = new ContextWrapper(context);
    File directory = contextWrapper.getDir(context.getFilesDir().getName(), Context.MODE_PRIVATE);

    File parent = new File(directory, "RingTones");
    final String songPath = "/" + arrayListNames.get(pos).getSoundLink() + ".mp3";
    final String loc = parent + songPath;
    final File checkFile = new File(parent, songPath);

и когда я хочу чтобы установить mp3-файл в качестве мелодии звонка, будет установлена ​​мелодия звонка, и имя mp3-файла появится в меню «Настройки» / «Уведомления» и «Звук / мелодия звонка», но звук является звуком телефона по умолчанию. здесь установлен код мелодии звонка:

setRingtone.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            //<editor-fold desc="RingTones">
                            ContentValues values = new ContentValues();
                            values.put(MediaStore.MediaColumns.DATA, checkFile.getAbsolutePath());
                            values.put(MediaStore.MediaColumns.TITLE, arrayListNames.get(pos).getSoundLink()); //You will have to populate
                            values.put(MediaStore.MediaColumns.SIZE, 215454);
                            values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
                            values.put(MediaStore.Audio.Media.ARTIST, "Band Name"); //You will have to populate this
                            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);
                            Uri uri = MediaStore.Audio.Media.getContentUriForPath(checkFile.getAbsolutePath());
                            context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + checkFile.getAbsolutePath() + "\"", null);
                            Uri newUri = context.getContentResolver().insert(uri, values);
                            RingtoneManager.setActualDefaultRingtoneUri(
                                    context,
                                    RingtoneManager.TYPE_RINGTONE,
                                    newUri
                            );
                            setRingTonesDialog.dismiss();
                            //Ringtone set

                        }
                    });

Я думаю, что из-за сохранения расположения файла во внутренней памяти, что я должен изменить?

...