Stellen Sie eine ausgewählte Audiodatei als Klingelton ein

Ich entwickle eine Anwendung: Ich versuche, eine Audiodatei als Klingelton festzulegen.
Ich habe viele Posts gesehen, aber niemand hat mir wirklich geholfen, also habe ich beschlossen, diese Frage zu stellen.

Ich benutze diesen Code, wenn auf den Button geklickt wird:

@Override
    public void onClick(View v) {
Intent intent = new Intent();  
            intent.setAction(Intent.ACTION_GET_CONTENT);  
            intent.setType("audio/*");          
            startActivityForResult(Intent.createChooser(intent, "Choose Sound File"), Audio);
}

imonActivityResult Ich versuche, den Dateipfad zu ermitteln und dann die Audiodatei mit dem folgenden Code als Klingelton festzulegen:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == Audio && requestCode==RESULT_OK) {


          Uri s1 = data.getData();
          String s = s1.getPath(); 


        if(s!=null){    

            try {
                k = new File(new URI(s)); //(File k;)
            } catch (URISyntaxException e) {

                e.printStackTrace();
            }
                ContentValues values = new ContentValues();
                values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
                values.put(MediaStore.MediaColumns.TITLE, "My Song title");
                values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg");
                values.put(MediaStore.Audio.Media.ARTIST, "Some Artist");
                values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
                values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
                values.put(MediaStore.Audio.Media.IS_ALARM, false);
                values.put(MediaStore.Audio.Media.IS_MUSIC, false);

                //Insert it into the database
                Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
                Uri newUri = getContentResolver().insert(uri, values);

                RingtoneManager.setActualDefaultRingtoneUri(
                  MainActivity.this,
                  RingtoneManager.TYPE_RINGTONE,
                  newUri);   

        }

        }
}

Leider funktioniert dieser Code nicht.
Ich würde mich über Ihre Antworten freuen. Entschuldigung für mein schlechtes Englisch.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage