小米设备上显示“无法启动启动器”消息

时间:2018-07-08 06:53:55

标签: java android

我有一个将快捷方式固定到Android主屏幕的应用程序。我正在使用IntentShortcutManager API分别为Android 7.1.2及更低版本和Android 8.0及更高版本的设备固定快捷方式。

一切正常,直到小米发布了MIUI9。我在库存的Android和三星上测试了我的应用程序,并且运行良好。即使使用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可以使用这些功能。我已经浏览了整个网络,但是在小米的网站或任何其他网站上都没有与此问题相关的文档或内容。

我做了很多调试,发现:

  • 当我未在代码中设置数据类型并打开快捷方式时,它会要求我提供一个应用程序来打开快捷方式。然后,我选择了“ Adob​​e Reader”,但它仍然不起作用。 Adobe Reader将打开,但不会打开文件。我得到一个标题为“ Adob​​e Reader”的工具栏,其下为白色屏幕。无法理解这种行为
  • 试图将数据类型更改为application/*之类,但仍然没有好处。

如果有人想尝试调试该应用,请访问以下仓库:https://github.com/sidhuparas/PDFPinner

预先感谢:)

2 个答案:

答案 0 :(得分:0)

由于我没有这样的设备,我只能建议运行adb shell dumpsys package并在其输出中进行挖掘。在其中,您应该查找“活动解析器表”部分。它列出了类型方案,以及程序包接受的操作。它应该使您深入了解可以发送的意图和不能发送的意图。

答案 1 :(得分:0)

这本身是一个操作系统错误,已在运行Android Oreo的MIUI 9中修复。请注意,并非所有MIUI 9都在Oreo上运行。运行牛轧糖的人有此错误。