2

連絡先の名前を指定すると、その着信音をデフォルトの着信音に変更する必要があります。現在、私がやっていることは

1) すべての連絡先を反復処理する

2) 目的の連絡先が見つかったら、新しい着信音 (内部ストレージにある xperia.mp3) でコンテンツ値を準備し、更新します。

しかし、コードは効果を示していませんか?

私はアンドロイドが初めてで、これを行うには助けが必要です。他の回答も読んでください。しかし、それらはあまり役に立ちませんでした。

String whereName = ContactsContract.Data.MIMETYPE + " = ?";
String[] whereNameParams = new String[]{ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE };
// Get cursor to all the names
Cursor nameCur = getActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);
while (nameCur.moveToNext()) {
    String display = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
    // if name equals name to check
    if(display.equals(tocheck)){ // to check contains the name to check.
        Uri contactData = ContactsContract.Contacts.CONTENT_URI;
        String contactId = nameCur.getString(nameCur.getColumnIndexOrThrow("_id"));
        String[] PROJECTION = new String[] {
            ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME,
            ContactsContract.Contacts.HAS_PHONE_NUMBER,
            };

        Cursor localCursor = getActivity().managedQuery(contactData, PROJECTION, null, null, null);
        localCursor.move(Integer.valueOf(contactId)/*CONTACT ID NUMBER*/);
        String str1 = localCursor.getString(localCursor.getColumnIndexOrThrow("_id"));
        String str2 = localCursor.getString(localCursor.getColumnIndexOrThrow("display_name"));
        Uri localUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, str1);
        ContentValues localContentValues = new ContentValues();
        File newSoundFile = new File(Environment.getExternalStorageDirectory() + File.separator + "xperia.mp3"); // save new ringtone.
        localContentValues.put(ContactsContract.Data.RAW_CONTACT_ID, contactId);
        localContentValues.put(ContactsContract.Data.CUSTOM_RINGTONE,newSoundFile.getAbsolutePath()); 
        getActivity().getContentResolver().update(localUri, localContentValues, null, null);
        nameCur.close();
        break;
        }

}
4

0 に答える 0