0

私はこれを使おうとしています:

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

...デフォルトの着信音を設定します。タイプが。で例外が発生しSecurtyExceptionます。

私はこれを見ました:

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

...着信音に対応するmenefestファイルに設定する権限があるかどうかを確認するために、何も見つかりませんでした。

以下は私のコードです:

// make it a ring tone
    void   MakeRingtune( String name)
    {

    File newSoundFile = new File("/sdcard/", "myringtone.oog");

    String strUri = "android.resource://"+getPackageName()+  "/" + "raw/"+name;
    Uri mUri = Uri.parse(strUri);

    ContentResolver mCr = getContentResolver();
    AssetFileDescriptor soundFile;
    try {
           soundFile= mCr.openAssetFileDescriptor(mUri, "r");
       } catch (FileNotFoundException e) {
           MessageBox("Ringtone Manager ","System Error cannot add ringtone ");
           return;  
       }

       try {
          byte[] readData = new byte[1024];
          FileInputStream fis = soundFile.createInputStream();
          FileOutputStream fos = new FileOutputStream(newSoundFile);
          int i = fis.read(readData);

          while (i != -1) {
            fos.write(readData, 0, i);
            i = fis.read(readData);
          }

          fos.close();
       } catch (IOException io) {
           MessageBox("Ringtone Manager ","Could not copy Ringtone, may be due to no sd card");
           return;
       }

//////////////////////////////////////////
       ContentValues values = new ContentValues();
       values.put(MediaStore.MediaColumns.DATA, newSoundFile.getAbsolutePath());
       values.put(MediaStore.MediaColumns.TITLE, "my ringtone");
       values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/oog");
       values.put(MediaStore.MediaColumns.SIZE, newSoundFile.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(newSoundFile.getAbsolutePath());
       Uri newUri = mCr.insert(uri, values);


       try {
           RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
       } catch (Throwable t) {
        //   Log.d(TAG, "catch exception");
           MessageBox("Ringtone Manager ","Could not set as your default ringtone ");
           return;
       }

///////////////////////////////////////   
       MessageBox("Ringtone Manager ","Sound Clip Added to your Ringtones");
    } // end methed
4

1 に答える 1

1

「android.permission.WRITE_SETTINGS」はあなたが持っている必要があるものです。

于 2012-12-20T00:30:14.877 に答える