android - set custom ringtone to specific contact number

前端 未结 1 393
执笔经年
执笔经年 2021-01-15 02:55

I am trying to develop android app, I need to assign ringtone to specific contact number without permit the user to access list of contact.

here is the code for assi

相关标签:
1条回答
  • 2021-01-15 03:49

    set custom ringtone to specific contact number

    Android has a special column for this: ContactsContract.CUSTOM_RINGTONE.

    So, you could use ContactsContract.Contacts.getLookupUri to get your contact's Uri, after that pretty much all that's left is to call ContentResolver.update.

    Here's an example of looking up a contact by their phone number, then applying a custom ringtone:

    import android.provider.ContactsContract.Contacts;
    import android.provider.ContactsContract.PhoneLookup;
    
    // The Uri used to look up a contact by phone number
    final Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "012-345-6789");
    // The columns used for `Contacts.getLookupUri`
    final String[] projection = new String[] {
            Contacts._ID, Contacts.LOOKUP_KEY
    };
    // Build your Cursor
    final Cursor data = getContentResolver().query(lookupUri, projection, null, null, null);
    data.moveToFirst();
    try {
        // Get the contact lookup Uri
        final long contactId = data.getLong(0);
        final String lookupKey = data.getString(1);
        final Uri contactUri = Contacts.getLookupUri(contactId, lookupKey);
        if (contactUri == null) {
            // Invalid arguments
            return;
        }
    
        // Get the path of ringtone you'd like to use
        final String storage = Environment.getExternalStorageDirectory().getPath();
        final File file = new File(storage + "/AudioRecorder", "hello.mp4");
        final String value = Uri.fromFile(file).toString();
    
        // Apply the custom ringtone
        final ContentValues values = new ContentValues(1);
        values.put(Contacts.CUSTOM_RINGTONE, value);
        getContentResolver().update(contactUri, values, null, null);
    } finally {
        // Don't forget to close your Cursor
        data.close();
    }
    

    Also, you'll need to add both permissions to read and write contacts:

    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    
    0 讨论(0)
提交回复
热议问题