1

当我在 Android Pie 上运行我的应用程序时,它工作正常,我的意思是我的设置铃声和警报的代码,通知工作完美,但是当我在 Android 7(牛轧糖)上运行这个应用程序时,警报和通知已设置,但铃声没有。当我单击设置铃声时,吐司消息显示该铃声设置成功,但是当我在手机上检查它时,它仍然使用以前的铃声。

设置铃声代码:

 private void setRingtone() {
    AssetFileDescriptor openAssetFileDescriptor;
    ((AudioManager) getSystemService(AUDIO_SERVICE)).setRingerMode(2);
    File file = new File(Environment.getExternalStorageDirectory() + "", this.fNmae);
    if (!file.getParentFile().exists()) {
        file.getParentFile().mkdirs();
    }
    if (!file.exists()) {
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  Uri parse = Uri.parse(this.fPAth);

    ContentResolver contentResolver = getContentResolver();
    try {
        openAssetFileDescriptor = contentResolver.openAssetFileDescriptor(parse, "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 {
        RingtoneManager.setActualDefaultRingtoneUri(MainActivity.this, RingtoneManager.TYPE_RINGTONE, parse);
        Toast.makeText(this, new StringBuilder().append("Ringtone set successfully"), Toast.LENGTH_LONG).show();
    } catch (Throwable th) {
        Toast.makeText(this, new StringBuilder().append("Ringtone feature is not working"), Toast.LENGTH_LONG).show();
    }
}

报警代码:

private void setAlarm() {

    AssetFileDescriptor openAssetFileDescriptor;
    ((AudioManager) getSystemService(AUDIO_SERVICE)).setRingerMode(2);
    File file = new File(Environment.getExternalStorageDirectory() + "", this.fNmae);
    if (!file.getParentFile().exists()) {
        file.getParentFile().mkdirs();
    }
    if (!file.exists()) {
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    Uri parse = Uri.parse(this.fPAth);
    ContentResolver contentResolver = getContentResolver();
    try {
        openAssetFileDescriptor = contentResolver.openAssetFileDescriptor(parse, "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(false));
    contentValues.put("is_notification", Boolean.valueOf(false));
    contentValues.put("is_alarm", Boolean.valueOf(true));
    contentValues.put("is_music", Boolean.valueOf(false));
    try {
        Toast.makeText(this, new StringBuilder().append("Alarm set successfully"), Toast.LENGTH_LONG).show();
        //  RingtoneManager.setActualDefaultRingtoneUri(getBaseContext(), RingtoneManager.TYPE_RINGTONE, contentResolver.insert(MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath()), contentValues));

        RingtoneManager.setActualDefaultRingtoneUri(getBaseContext(), RingtoneManager.TYPE_ALARM, parse);
        Settings.System.putString(contentResolver, Settings.System.ALARM_ALERT,
                parse.toString());
    } catch (Throwable th) {
        Toast.makeText(this, new StringBuilder().append("Alarm feature is not working"), Toast.LENGTH_LONG).show();
    }
}
4

0 回答 0