android-将自定义铃声设置为特定的联系人号码

问题描述 投票:2回答:2

我正在尝试开发android应用,我需要在未允许用户访问联系人列表的情况下将铃声分配给特定的联系人号码。

这里是为所有联系人分配铃声的代码:

File k = new File("/sdcard/AudioRecorder", "hello.mp4");

   // Uri i = data.getData(); //getDATA
    //String s = i.getPath(); //getPath
   // File k = new File(s); //set File from path

//if(s!=null){  //(file.exists

    ContentValues values = new ContentValues();
       values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
       values.put(MediaStore.MediaColumns.TITLE, "ring");
       values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp4");
       values.put(MediaStore.MediaColumns.SIZE, k.length());
       values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
       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);

       Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
       getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null);
    Uri newUri = getContentResolver().insert(uri, values);
try {
           RingtoneManager.setActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_RINGTONE, newUri);
       } catch (Throwable t) {

       }   

我该如何针对特定联系人?

android android-contacts
2个回答
4
投票

将自定义铃声设置为特定的联系人号码

Android为此有一个特殊的列:ContactsContract.CUSTOM_RINGTONE

因此,您可以使用ContactsContract.CUSTOM_RINGTONE来获取联系人的ContactsContract.Contacts.getLookupUri,然后剩下的几乎就是呼叫ContactsContract.Contacts.getLookupUri

这是一个通过电话号码查找联系人,然后应用自定义铃声的示例:

Uri

此外,您还需要同时添加读取和写入联系人的权限:

ContentResolver.update

0
投票

@@ adneal您能检查我的问题吗?我曾尝试为特定联系人设置铃声,但该功能仅在部分手机上可用。这是我的问题。ContentResolver.update

© www.soinside.com 2019 - 2024. All rights reserved.