Сообщение «Не удается запустить запуск» на устройствах Xiaomi

У меня есть приложение, которое поддерживает ярлыки на главном экране Android. Я использую Intentи ShortcutManagerAPI для создания ярлыков для устройств с Android 7.1.2 и ниже и для Android 8.0 и выше соответственно.

Все работало нормально, пока Xiaomi не выпустили MIUI 9. Я тестировал свое приложение на Android и на Samsung, и он работал нормально. Он отлично справился с MIUI 8. Позвольте мне описать проблему, с которой я столкнулся в MIUI 9.

В MIUI 9 ярлык прикреплен к главному экрану успешно, и до этого шага нет проблемы. Но когда я пытаюсь открыть ярлык, он говорит, что не может запускаться . Эта ошибка, скорее всего, означает, что ОС не может найти приложение для открытия файла. Но есть встроенный PDF-ридер во всех устройствах, которые я тестировал. Я даже установил Adobe Reader и еще пару других PDF-считывателей, но все-таки это не сработало. Вот код преступника:

private void addShortcut(String path1, String pdfName) {
        File file = new File(path1);
        if (file.exists()) {
            Uri path = Uri.fromFile(file);
            Intent shortcutIntent = new Intent(Intent.ACTION_VIEW);
            shortcutIntent.setDataAndType(path, "application/pdf");
            Intent addIntent = new Intent();
            addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
            addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, pdfName);
            addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
                    Intent.ShortcutIconResource.fromContext(this.getApplicationContext(),image));
            addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
            getApplicationContext().sendBroadcast(addIntent);
        } else {
            Toast.makeText(this, "Some error occurred!", Toast.LENGTH_SHORT).show();
        }
    }

Поскольку код работает нормально на Stock Android и многих пользовательских скинах, я предполагаю, что это не проблема с моим кодом. Там есть что-то с MIUI 9. Я изучил всю сеть, но нет документации или чего-то связанного с этой проблемой на веб-сайте Xiaomi или любого другого.

Я сделал много отладки и узнал:

  • Когда я не устанавливаю тип данных в коде и не открывает ярлык, он просит меня открыть приложение. Затем я выбираю, например, «Adobe Reader», и он по-прежнему не работает. Adobe Reader открывается, но не открывает файл. Я получаю панель инструментов с заголовком «Adobe Reader» и белый экран ниже этого. Невозможно понять это поведение
  • Попробовал изменить тип данных на что-то вроде application/*и до сих пор не пользуется.

Если кто-то хочет попробовать и отлаживать приложение, вот репо: https://github.com/sidhuparas/PDFPinner

Заранее спасибо :)

java,android,

0

Ответов: 1


0

Поскольку у меня нет такого устройства, как это, я могу только предложить работать adb shell dumpsys packageи копаться в его выходе. Там вы должны посмотреть раздел «Таблица Resolver Table». В нем перечислены схемы типов и действия, принятые пакетами. Он должен дать вам представление о том, что вы можете отправить в намерении и что вы не можете.

Java, Android,
Похожие вопросы