Проверить, установлен ли рингтон перед установкой? - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть приложение, которое генерирует файл 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, и игнорировать вставку, если это так?

Спасибо.

...