以编程方式清除 laucher 默认值

Posted

技术标签:

【中文标题】以编程方式清除 laucher 默认值【英文标题】:Clear laucher defaults programmatically 【发布时间】:2012-04-20 12:23:41 【问题描述】:

我正在尝试使用android.permission.SET_PREFERRED_APPLICATIONS 删除默认的 laucher 参数(让用户选择另一个应用程序)。我在谷歌上搜索说这是不可能的,但是有一个使用这种技术的 Kidzone 应用程序(http://www.kidzoneapp.com/ 参见 youtube 视频)。

我现在正在尝试清除默认值

pm.clearPackagePreferredActivities("com.fede.launcher");

但收到此错误:

04-20 16:05:50.272: E/AndroidRuntime(6926): Caused by: java.lang.SecurityException: Neither user 10070 nor current process has android.permission.SET_PREFERRED_APPLICATIONS.2

好的,如果我无法清除启动器默认值,我如何检测现在默认的启动器,然后打开应用程序->管理应用程序->启动器名称对话框? (http://hothardware.com/articleimages/Item1525/small_move-to-sd-card-froyo.png) 用户可以自己清除默认设置

【问题讨论】:

How to show 'Clear Defaults' programmatically?的可能重复 【参考方案1】:

我正在尝试删除默认的 laucher 参数(让用户选择另一个应用程序)

这已经不可能了。

有一个使用这种技术的 Kidzone 应用程序(http://www.kidzoneapp.com/ 参见 youtube 视频)。

在允许这样做的旧版本 Android 上确实如此。

此外,它在清单中使用相同的权限。

现在,该权限已不再使用,它​​只能由使用与用于签署固件相同的签名密钥签署的应用程序持有。

【讨论】:

@POMATu:我假设你所说的“启动器”就是其他用户所说的“主屏幕”。在这种情况下,使用PackageManagerresolveActivity()HOME Intent 找出主屏幕实现是什么。在 API 级别 9 及更高级别上,您可以使用 ACTION_APPLICATION_DETAILS_SETTINGS 来调出给定包的详细信息屏幕。 很遗憾,我使用的是 api 级别 8。所以它不适用于这个 api 版本? @POMATu:对于 API 8 级设备,您能做的最好的事情就是通过ACTION_APPLICATION_SETTINGS 将它们带到“管理应用程序”屏幕。 Kidzone 应用程序显示完全需要的屏幕(清除默认按钮所在的位置),即使在 api 级别 8 (froyo) 上也是如此 @POMATu:然后他们使用了一些无证手段。

以上是关于以编程方式清除 laucher 默认值的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa 绑定,绑定到文本字段的默认值中的字符串值。如何以编程方式读取此字符串?

如何以编程方式创建默认滑块值?

如何在 Holo 主题 Api 11-17 Android 中以编程方式将 EditText 背景设置为默认值

恢复bios出厂默认值的方法步骤

jQuery:输入文本默认值,单击清除值,如果键入的值被删除,则获取默认值bac

JavaScript 清除文本字段的默认值,并返回原始值