我已将文件保存在sdcard/media/audio/ringtones文件夹中.该文件将出现在铃声选择的settings/sound/phone铃声列表中.
但我想将该文件设置为我的代码中的铃声.这是我的代码.
File k = new File(path, filename);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "TwiAppclip");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.ARTIST, "cssounds ");
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(k
.getAbsolutePath());
Uri newUri = getApplicationContext().getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(),
RingtoneManager.TYPE_RINGTONE, newUri);
Run Code Online (Sandbox Code Playgroud)
uri我在这里但是我得到了newUri = null.我认为这就是为什么它没有设置为铃声.
谁知道问题出在哪里?我该怎么做好newUri?
djk*_*djk 36
音频设置为铃声只有一次,但解决这个问题 - 如果你想再次运行相同的代码,你会被插入重复进入MediaStore的表,但SQLite数据库不会允许你.您必须重命名文件并添加其中的另一个实例,或者进入,删除该条目,然后重试.所以我每次都删除该条目,然后再次插入.
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null);
Uri newUri = getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(activity.this,
RingtoneManager.TYPE_RINGTONE, newUri);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16150 次 |
| 最近记录: |