2016-11-30 4 views
0

J'utilise le code suivant, mais cela ne semble pas changer la sonnerie. Qu'est-ce que je fais de mal, ou existe-t-il un moyen plus facile de définir un mp3 à la sonnerie? J'ai un uri qui analyse l'emplacement, et j'appelle la fonction suivante. Je sais que l'uri est correct car il fonctionne correctement avec une méthode de partage de fichiers que j'ai.Comment définir la sonnerie dans Android, en utilisant le gestionnaire de sonnerie?

private void setRingtone(Uri uri) { 
     AssetFileDescriptor openAssetFileDescriptor; 
     ((AudioManager) getActivity().getSystemService(AUDIO_SERVICE)).setRingerMode(2); 
     File file = new File(Environment.getExternalStorageDirectory() + "/appkeeda", mp3s[position]); 
     if (!file.getParentFile().exists()) { 
      file.getParentFile().mkdirs(); 
     } 
     if (!file.exists()) { 
      try { 
       file.createNewFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     ContentResolver contentResolver = getActivity().getContentResolver(); 
     try { 
      openAssetFileDescriptor = contentResolver.openAssetFileDescriptor(uri, "r"); 
     } catch (FileNotFoundException e2) { 
      openAssetFileDescriptor = null; 
     } 
     try { 
      byte[] bArr = new byte[1024]; 
      FileInputStream createInputStream = openAssetFileDescriptor.createInputStream(); 
      FileOutputStream fileOutputStream = new FileOutputStream(file); 
      for (int read = createInputStream.read(bArr); read != -1; read = createInputStream.read(bArr)) { 
       fileOutputStream.write(bArr, 0, read); 
      } 
      fileOutputStream.close(); 
     } catch (IOException e3) { 
      e3.printStackTrace(); 
     } 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put("_data", file.getAbsolutePath()); 
     contentValues.put("title", "nkDroid ringtone"); 
     contentValues.put("mime_type", "audio/mp3"); 
     contentValues.put("_size", Long.valueOf(file.length())); 
     contentValues.put("artist", Integer.valueOf(R.string.app_name)); 
     contentValues.put("is_ringtone", Boolean.valueOf(true)); 
     contentValues.put("is_notification", Boolean.valueOf(false)); 
     contentValues.put("is_alarm", Boolean.valueOf(false)); 
     contentValues.put("is_music", Boolean.valueOf(false)); 
     try { 
      //Toast.makeText(this, new StringBuilder().append("Ringtone set successfully"), Toast.LENGTH_LONG).show(); 
      RingtoneManager.setActualDefaultRingtoneUri(getActivity().getBaseContext(), 1, contentResolver.insert(MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath()), contentValues)); 
     } catch (Throwable th) { 
      //Toast.makeText(this, new StringBuilder().append("Ringtone feature is not working"), Toast.LENGTH_LONG).show(); 
     } 
    } 
+0

se réfèrent http://stackoverflow.com/questions/1271777/how-to-set-ringtone-in-android-from-my-activity – sasikumar

+0

ne fonctionne pas mais merci, je pense que le code pourrait être obsolète –

Répondre