Я использую менеджер загрузок, чтобы загрузить файл mp3, используя приведенный ниже код.
equest.setAllowedNetworkTypes(
DownloadManager.Request.NETWORK_WIFI
| DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(true)
.setTitle(filename)
.setVisibleInDownloadsUi(false)
.setNotificationVisibility(VISIBILITY_VISIBLE)
.setDescription("Setting as ringtone")
.setDestinationInExternalFilesDir(context,"tone", filename+".mp3");
, а затем используйте метод ниже, чтобы установить этот mp3 в качестве мелодии звонка
public boolean setRingtone(Context context,Uri uriFile){
FileUtils fileUtils=new FileUtils(context);
try {
File ringtoneFile = new File(fileUtils.getPath(uriFile));
ContentValues content = new ContentValues();
content.put(MediaStore.MediaColumns.DATA,ringtoneFile.getAbsolutePath());
content.put(MediaStore.MediaColumns.TITLE, ringtoneFile.getName());
content.put(MediaStore.MediaColumns.SIZE, ringtoneFile.length());
content.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
// content.put(MediaStore.Audio.Media.ARTIST, "Madonna");
content.put(MediaStore.Audio.Media.DURATION, fileUtils.fileDuration(ringtoneFile.getAbsolutePath()));
content.put(MediaStore.Audio.Media.IS_RINGTONE, true);
content.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
content.put(MediaStore.Audio.Media.IS_ALARM, true);
content.put(MediaStore.Audio.Media.IS_MUSIC, true);
//Insert it into the database
Log.i("TAG", "the absolute path of the file is :"+
ringtoneFile.getAbsolutePath());
Uri uri = MediaStore.Audio.Media.getContentUriForPath(
ringtoneFile.getAbsolutePath());
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + ringtoneFile.getAbsolutePath() + "\"",
null);
Uri newUri = context.getContentResolver().insert(uri, content);
System.out.println("uri=="+uri);
Log.i("TAG","the ringtone uri is :"+newUri);
RingtoneManager.setActualDefaultRingtoneUri(
context, RingtoneManager.TYPE_RINGTONE,
newUri);
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
Это работает нормально, но когдая заменяю .setDestinationInExternalFilesDir(context,"tone", filename+".mp3");
на setDestinationInExternalFilesDir
рингтон не настраивается.Эта строка возвращает null Uri newUri = context.getContentResolver().insert(uri, content);
Я предполагаю, что это потому, что данные приложения недоступны публично и скрыты.Мне нужно хранить данные в хранилище приложений, потому что я хочу, чтобы они были удалены при удалении приложения.Есть ли способ представить данные приложения другому приложению?Я пытался использовать контент-провайдера, но не понял, как это сделать.Пожалуйста, помогите.