我正在尝试将存储在/storage/sdcard0/Ringtones
上的铃声(mp3文件)设置为我希望的联系人。在运行应用程序时,铃声会被保存,我可以在打开该联系人时看到它。但是,当该联系人致电时。
我没有接听电话,屏幕上显示以下消息: process com.android.phone stops.
以下是我用来为联系人设置铃声的代码 -
Nb: K is the File object which has the filename and path for the .mp3 clip
String str1 = c.getString(c.getColumnIndexOrThrow("_id"));
Uri localUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, str1);
ContentValues localContentValues = new ContentValues();
localContentValues.put(ContactsContract.Data.RAW_CONTACT_ID, contactId);
localContentValues.put(ContactsContract.Contacts.CUSTOM_RINGTONE, k.getAbsolutePath());
getContentResolver().update(localUri, localContentValues, null, null);
联系电话时Logcat错误:
01-16 15:27:09.632: E/AndroidRuntime(24282): FATAL EXCEPTION: main
01-16 15:27:09.632: E/AndroidRuntime(24282): java.lang.NullPointerException
01-16 15:27:09.632: E/AndroidRuntime(24282): at com.android.phone.Ringer.isValidRingtoneURI(Ringer.java:742)
01-16 15:27:09.632: E/AndroidRuntime(24282): at com.android.phone.CallNotifier.onQueryComplete(CallNotifier.java:2079)
答案 0 :(得分:0)
你应该提供Uri而不是绝对路径(见here):
Uri uriOfRt = Uri.fromFile(new File( k.getAbsolutePath()));
localContentValues.put(ContactsContract.Contacts.CUSTOM_RINGTONE, uriOfRt);