Imposta come suoneria di chiamata? android

Sto cercando di apprendere come aggiungere set come function di suoneria contatto. So già come impostare la suoneria di default, ma non riesco a capire come impostare come suoneria di contatto. Sono arrivato alla parte in cui scelgo il contatto, ma non so come assegnare la suoneria a quel contatto. Quella parte mi sta stringendo e non riesco a trovare la risposta in domande che sono state già chieste su questo argomento. Ecco il mio codice finora:

static public final int CONTACT_CHOOSER_ACTIVITY_CODE = 73729; private File csound; private final File rpath = new File(Environment.getExternalStorageDirectory() + "/Ringtone sounds/Ringtones"); @Override public void onClick(View v) { setContRing(); } private void setContRing() { Boolean success = false; csound = new File(rpath, FNAME);rpath.mkdirs(); if (!csound.exists()) { try { InputStream in = getResources().openRawResource(FPATH); FileOutputStream out = new FileOutputStream(csound.getPath()); byte[] buff = new byte[1024]; int read = 0; try { while ((read = in.read(buff)) > 0) { out.write(buff, 0, read); } } finally { in.close(); out.close(); } } catch (Exception e) { success = false; } } else { success = true; setContRingtone(); } if (!success) { setContRingtone(); } } private void setContRingtone() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(ContactsContract.Contacts.CONTENT_TYPE); startActivityForResult(intent, CONTACT_CHOOSER_ACTIVITY_CODE); } }); } 

Modifica per bounty: mi chiedo se qualcuno può mostrarmi come farlo, ho provato con i codici trovati in altre domande ma non ho potuto applicarli al mio codice. Posso copiare il file ma come get il contatto e assegnare la suoneria a quel contatto?

  • Environment.getExternalStorageDirectory non restituisce il path all'archiviazione rimovibile
  • Dialogo Facebook di Android
  • Come aggiungere la row ondulata rossa al di sotto del text nel TextView di Android
  • Come personalizzare la window di dialogo Progress in Android
  • Retrofit - lancio di un'exception java.lang.IllegalArgumentException: è consentita una sola annotazione di codifica
  • Come segnalare la sincronizzazione completa all'Android SyncManager?
  • Android BLE si connette inaspettatamente e ripetutamente alla periferica
  • Come rendere il text sbiadito dentro e fuori in Android?
  • Visualizzare il database SQLite sul dispositivo in Android Studio
  • Studio Studio Studio Gradle "Imansible avviare il process daemon / initialization di VM"
  • Android: URI per aprire un'image con ACTION View
  • Controlla se l'app è disponibile in Android Market
  • One Solution collect form web for “Imposta come suoneria di chiamata? android”

    Da impostare la suoneria personalizzata al numero di contatto specifico

    Android ha una colonna speciale per questo: ContactsContract.CUSTOM_RINGTONE .

    Quindi, puoi utilizzare ContactsContract.Contacts.getLookupUri per get il tuo contatto Uri , dopo che praticamente tutto ciò che è rimasto è call ContentResolver.update .

    Ecco un esempio di ricerca di un contatto per numero di telefono, quindi applicazione di una suoneria personalizzata:

     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(); } 

    Inoltre, è necessario aggiungere entrambe le autorizzazioni per leggere e scrivere i contatti:

     <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 

    Per estendere un po 'su questo 012-345-6789 e come modificarlo a vostro bisogno, cambiare il numero di telefono 012-345-6789 in questa row a quello che stai cercando

     // The Uri used to look up a contact by phone number final Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, "012-345-6789"); 

    Impostare il tuo predefinito CUSTOM_RINGTONE nel tuo telefono ContattiContract. Vi è un'altra opzione, simile, qui: Impostazione della suoneria personalizzata di contatto, come?

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.