到目前为止我做了什么:
我当前正面临着发射器的一些问题。 我的应用程序将快捷方式添加到启动器的工作区(主屏幕)。 但在某些设备(Samsum Duos)上,例如标题和/或图标 重启后更改为我的默认应用程序。
所以我目前正在浏览android中的1000行代码 确定问题的来源,但无法找到它。
我在InstallShortcutReceiver看到了
183 中的评论" name"由Intent.EXTRA_SHORTCUT_NAME
提供
某些情况仅用于比较等,将被替换
使用应用程序默认名称。
// This name is only used for comparisons and notifications, so fall back to activity name // if not supplied
但是(我的Samsum Duos根深蒂固)我可以找到完整的信息 关于 launcher.db 内的单元格位置和shortcutInfo。
重启后,不消失了,但可能只是不正确已初始化!
是否有人知道自定义的,以编程方式创建的快捷方式,将标题和/或图标更改回创建它的应用程序?
下一个故事:
我注意到这个问题在我的Samsum Duos上是可以重现的,所以我决定了 从我的"保存启动器"中排除设备启动器列表。
要接收默认启动器,我将执行以下操作:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = null;
try {
resolveInfo = context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); //can return null!
}catch(RuntimeException e){
ExceptionHandler.logAndSendException(e);//package manager has died
return false;
}
但现在的问题是,它始终返回默认的启动器
包是:com.android.launcher2.Launcher
,这将是标准
android stock启动器。但我知道Samsum使用 TouchWiz home
launcher,whos包位于 com.sec.android.app.launcher 下!
这也是我找到launcher.db及其所有ShortcutInfo的地方。
2。第二个问题
如何重现正确的默认启动程序包以进行识别 使用哪个发射器?
修改
我有点修复第二个问题。不知怎的,我来自 ResolveInfo PackageManager似乎不可靠。
对于Samsum Duos,我得到了:
resolveInfo.activityInfo.name = com.android.launcher2.Launcher
resolveInfo.activityInfo.packageName = com.sec.android.app.launcher //this is what I need
但对于Redmi MIUI:
resolveInfo.activityInfo.name = com.miui.home.launcher.Launcher //this time I would need this
resolveInfo.activityInfo.packageName = com.miui.home //the packageName is not complete!
我需要一个发射器的唯一标识符!所以我认为 activityInfo.name 就是 要走的路,但在某些情况下并非如此。而packageManager似乎适用于太多设备。有什么建议吗?
干杯!