以编程方式清除 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:我假设你所说的“启动器”就是其他用户所说的“主屏幕”。在这种情况下,使用PackageManager
和resolveActivity()
和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 背景设置为默认值