У меня есть приложение, которое поддерживает ярлыки на главном экране Android. Я использую Intent
и ShortcutManager
API для создания ярлыков для устройств с 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
Заранее спасибо :)