1

我想设置默认铃声。当我运行代码时,我的手机变成了静音。我已经为此工作了 8 个小时,但我无法做到。这是我设置铃声的代码。

String filepath ="/sdcard/usman.mp3";
                        File file = new File(filepath);
                           ContentValues values = new ContentValues();
                           values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
                           values.put(MediaStore.MediaColumns.TITLE, "my ringtone");
                           values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
                           values.put(MediaStore.MediaColumns.SIZE, file.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, false);
                           values.put(MediaStore.Audio.Media.IS_ALARM, false);
                           values.put(MediaStore.Audio.Media.IS_MUSIC, false);

                           Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
                           Uri newUri = getContentResolver().insert(uri, values);

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

我已经添加了所有需要的权限。

4

1 回答 1

1

您的代码似乎很好。您可能应该尝试使用按钮实际选择您想要的铃声。因此,当您单击按钮时,您将能够使用准确的文件路径设置铃声:

看看你应该做什么:

这是我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 中再次检查所需的权限

你需要什么:

<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>

您可以在 Google Play 上试用我的应用:BackAtel 音频管理器

希望有帮助....

于 2014-03-01T17:45:25.753 回答