我有一个将快捷方式固定到Android主屏幕的应用程序。我正在使用Intent和ShortcutManagerAPI分别为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包含某些内容。我已经浏览了整个Web,但是小米的网站或任何其他网站上都没有文档或与此问题相关的内容。我做了很多调试,发现:当我未在代码中设置数据类型并打开快捷方式时,它会要求我提供一个应用程序来打开快捷方式。然后,我选择了“ Adobe Reader”,但它仍然不起作用。Adobe Reader将打开,但不会打开文件。我得到一个标题为“ Adobe Reader”的工具栏,其下为白色屏幕。无法理解这种行为试图将数据类型更改为类似的内容application/*,但仍然没有任何好处。如果有人想尝试调试该应用,请访问以下仓库:https : //github.com/sidhuparas/PDFPinner
2 回答
![?](http://img1.sycdn.imooc.com/545865b000016a9202200220-100-100.jpg)
jeck猫
TA贡献1909条经验 获得超7个赞
由于我没有这样的设备,因此只能建议adb shell dumpsys package
在其输出中运行和挖掘。在其中,您应该查找“活动解析器表”部分。它列出了类型方案,以及程序包接受的操作。它应该使您深入了解可以发送的意图和不能发送的意图。
![?](http://img1.sycdn.imooc.com/5458463b0001358f02200220-100-100.jpg)
ibeautiful
TA贡献1993条经验 获得超5个赞
这本身是一个操作系统错误,已在运行Android Oreo的MIUI 9中修复。请注意,并非所有MIUI 9都在Oreo上运行。运行牛轧糖的人有此错误。
添加回答
举报
0/150
提交
取消