У меня есть приложение, которое генерирует файл MP3, и вы можете решить, установить его в качестве мелодии звонка, будильника или уведомления.
------ Например, установка в качестве тревоги с помощью кнопки
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, resultFile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "My Audio");
values.put(MediaStore.Audio.Media.IS_ALARM, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(resultFile.getAbsolutePath());
Uri newUri = Result.this.getContentResolver().insert(uri, values);
try {
RingtoneManager.setActualDefaultRingtoneUri(
Result.this,
RingtoneManager.TYPE_ALARM,
newUri
);
Toast.makeText(Result.this, "Successfully set as default alarm.", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(Result.this, "It's not possible to establish it as alarm.", Toast.LENGTH_SHORT).show();
}
Я повторяю ту же процедуру для мелодии звонка или уведомления. ОДНАКО, если вы щелкнете дважды (или более), произойдет сбой, поскольку он вставляется в MediaStore два (или более) раза.
Я пытался очистить MediaStore перед вставкой, НО он очищает также рингтон / будильник / уведомление, где установлен тот же URI , поэтому у меня не работает.
Uri uri = MediaStore.Audio.Media.getContentUriForPath(resultFile.getAbsolutePath());
getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + resultFile.getAbsolutePath() + "\"", null);
Uri newUri = Result.this.getContentResolver().insert(uri, values);
Есть ли у вас идеи, как я могу запрашивать и сравнивать, если тот же URI установлен как ALARM, и игнорировать вставку, если это так?
Спасибо.