簡體   English   中英

ContentResolver.insert 總是返回 null

[英]ContentResolver.insert always returning null

我正在嘗試通過按下按鈕設置自定義鈴聲,但從 ContentResolver 的插入方法中獲取 null。 以下是設置鈴聲的代碼。 我檢查了 stackoverflow 本身,一些用戶說它為他們工作,但在我的情況下,我得到變量“newUri”為空

聲音文件在所需位置創建,所以我知道“newSoundFile”沒問題。 在日志中打印“值”變量時,會給出以下內容。

值為 title=my ringtone is_notification=true mime_type=audio/mp3 is_alarm=true is_ringtone=true _size=8733 is_music=false artist=None _data=/mnt/sdcard/media/ringtone/myringtone.mp3

try
{
     uri = MediaStore.Audio.Media.getContentUriForPath(newSoundFile.getAbsolutePath());
     Log.d("Test", uri.toString());
     ContentValues values = new ContentValues();
     values.put(MediaStore.MediaColumns.DATA, newSoundFile.getAbsolutePath());
     values.put(MediaStore.MediaColumns.TITLE, "my ringtone");
     values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
     values.put(MediaStore.MediaColumns.SIZE, newSoundFile.length());
     values.put(MediaStore.Audio.Media.ARTIST, "None");
     values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
     values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
     values.put(MediaStore.Audio.Media.IS_ALARM, true);
     values.put(MediaStore.Audio.Media.IS_MUSIC, false);
     Log.d("Test","Values are "+values.toString());
     newUri = mCr.insert(uri, values);
}
catch (Exception ee)
{
     Log.d("Test", "Exception is " + ee);
}
if(newUri == null)
    Log.d("Test", "newUri is Null");
 else
    Log.d("Test", "newUri is "+newUri.toString());

使用此代碼。

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, newSoundFile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "my ringtone");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "None");
values.put(MediaStore.MediaColumns.SIZE, 215454);
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(newSoundFile
        .getAbsolutePath());
getContentResolver().delete(
        uri,
        MediaStore.MediaColumns.DATA + "=\""
                + newSoundFile.getAbsolutePath() + "\"", null);
Uri newUri = getContentResolver().insert(uri, values);

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

不要設置重復的文件名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM