2014-01-15 129 views
0
File newSoundFile = new File("pathFile"); 
     if (DebugUtil.DEBUG) { 
      DebugUtil.logError(new Exception(), newSoundFile.getAbsolutePath()); 
     } 
     ContentValues values = new ContentValues(); 
     values.put(MediaStore.MediaColumns.DATA, newSoundFile.getAbsolutePath()); 
     values.put(MediaStore.MediaColumns.TITLE, "Title"); 
     values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*"); 
     values.put(MediaStore.MediaColumns.SIZE, newSoundFile.length()); 
     values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name); 
     values.put(MediaStore.Audio.Media.DURATION, 230); 
     values.put(MediaStore.Audio.Media.IS_RINGTONE, true); 
     values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false); 
     values.put(MediaStore.Audio.Media.IS_ALARM, false); 
     values.put(MediaStore.Audio.Media.IS_MUSIC, false); 

     Uri uri = MediaStore.Audio.Media.getContentUriForPath(newSoundFile.getAbsolutePath()); 
     context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + newSoundFile.getAbsolutePath() + "\"", null); 
     Uri newUri = context.getContentResolver().insert(uri, values); 

     try { 
      RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri); 
      KitKatToast.makeText(context, R.string.msg_setAsRingTuneSuccess, KitKatToast.LENGTH_LONG).show(); 
     } 
     catch (Exception e) { 
      if (DebugUtil.DEBUG) { 
       DebugUtil.logError(new Exception(), e.toString()); 
      } 
     } 

回答

0

我看到很多帖子,但任何人都表明我实际上应该做的事。所以我决定创建这个完整的答案。唯一觉得你真的需要的是一个按钮。 让我们开始。

这里是我的MainActivity.java我使用

 public class MainActivity extends Activity {  

     @Override 
      public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main2); 
     b2 = (Button) findViewById(R.id.button2); 
     b2.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0) { 

      Intent intent1 = new Intent(); 
       intent1.setAction(Intent.ACTION_GET_CONTENT); 
       intent1.setType("audio/*"); 
       startActivityForResult(Intent.createChooser(intent1, "Choose Sound File"), 6); 



      } 

     }); 

      } 




    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(resultCode ==RESULT_OK&&requestCode==6){ 
    Uri i = data.getData(); //getDATA 
    String s = = i.getPath(); //getPath 
    File k = new File(s); //set File from path 

if(s!=null){ //(file.exists 

    ContentValues values = new ContentValues(); 
     values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath()); 
     values.put(MediaStore.MediaColumns.TITLE, "ring"); 
     values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); 
     values.put(MediaStore.MediaColumns.SIZE, k.length()); 
     values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name); 
     values.put(MediaStore.Audio.Media.IS_RINGTONE, true); 
     values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true); 
     values.put(MediaStore.Audio.Media.IS_ALARM, true); 
     values.put(MediaStore.Audio.Media.IS_MUSIC, false); 

     Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()); 
     getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null); 
    Uri newUri = getContentResolver().insert(uri, values); 


     try { 
      RingtoneManager.setActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_RINGTONE, newUri); 
     } catch (Throwable t) { 

     }  
} 


    } 



    } 



    } 

最后它的真正重要的在你的AndroidManifest.xml如果你不加permision写外部存储您的应用程序会崩溃像我要添加这些permisions例如..的xD

你需要什么:

<uses-permission android:name="android.permission.WRITE_SETTINGS" ></uses-permission> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" ></uses-permission> 
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" ></uses-permission> 

您CA ñ尝试我的应用程序在谷歌播放:BackAtel Audio Manager

希望帮助....我的问题现在解决了!我希望我解决了你的问题:))