Разрешение отказа: запрещено отправлять трансляцию в android

Я создал простое приложение для камеры. Он отлично работает во всех версиях Android, кроме Android 4.4. Я получаю следующую ошибку, когда делаю снимок с камеры.

java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED from pid=26089, uid=10120

Ошибка:

В следующем месте:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

Как исправить эту проблему для KITKAT?

Сообщите мне!

Спасибо!

Ответ 1

Как исправить эту проблему для KITKAT?

Этот код никогда не был подходящим. К счастью, Android (наконец) предпринимает шаги, чтобы запретить приложениям подделывать больше системных передач, подобных этому.

Если вы хотите сообщить Android об индексе файла, который вы помещаете на внешнее хранилище, используйте MediaScannerConnection или ACTION_MEDIA_SCANNER_SCAN_FILE.

Ответ 2

Я решил эту проблему, вы можете использовать это:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, mediaMountUri));

надеюсь, что это может вам помочь!

Ответ 3

Android запрещает приложениям отправлять широковещательные передачи, такие как ACTION_MEDIA_SCANNER_SCAN_FILE или ACTION_MEDIA_MOUNTED. Вместо этого используйте статический метод scanFile для MediaScannerConnection.

MediaScannerConnection.scanFile(getApplicationContext(), new String[] { file.getAbsolutePath() }, null, new OnScanCompletedListener() {

                @Override
                public void onScanCompleted(String path, Uri uri) {
                    // TODO Auto-generated method stub

                }
            });

Ответ 4

Короткий ответ: вы не можете, по крайней мере, не легко.

Многие приложения использовали это намерение для повторной проверки всей файловой системы после изменения только одного файла, что значительно сократило срок службы батареи. Начиная с Android 4.4, теперь могут использовать только системные приложения. Вам, вероятно, придется найти обходное решение, которое не использует это намерение.