我想d出一个对话框,让用户选择一个启动器,使用set as default选项启动.我试过了@H_419_1@
@H_419_1@
Intent home = new Intent(Intent.ACTION_DEFAulT); home.addcategory(Intent.category_LAUNCHER); Intent chooser = Intent.createChooser(home, "Launcher"); context.startActivity(chooser);
但是由此d出的对话框没有设置默认值的选项.如果已设置默认启动器,则以下代码不会d出对话框.@H_419_1@
@H_419_1@
Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addcategory(Intent.category_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startMain);
如何才能做到这一点?@H_419_1@
解决方法:@H_419_1@
尝试使用以下内容:@H_419_1@
@H_419_1@
Intent startMain = new Intent(Intent.ACTION_MAIN);startMain.addcategory(Intent.category_HOME);startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(startMain);
如果已经设置了默认 *** 作(您的),则可以先调用:@H_419_1@
@H_419_1@
getPackageManager().clearPackagePreferredActivitIEs(getPackagename());
如果默认 *** 作不是您的,您无法以编程方式清除它,您可以做的是检查其他应用程序是否设置为默认值并显示消息.@H_419_1@
@H_419_1@
private boolean isMyLauncherDefault() { PackageManager localPackageManager = getPackageManager(); Intent intent = new Intent("androID.intent.action.MAIN"); intent.addcategory("androID.intent.category.HOME"); String str = localPackageManager.resolveActivity(intent, PackageManager.MATCH_DEFAulT_ONLY).activityInfo.packagename; return str.equals(getPackagename());}
如果其他应用程序设置为默认情况下的解决方法,您可以创建一个假的家,安装它(这将强制系统清除默认的应用程序),然后卸载它…@H_419_1@
的Manifest.xml@H_419_1@
@H_419_1@
<activity androID:name="FakeHome" androID:enabled="false"> <intent-filter> <action androID:name="androID.intent.action.MAIN" /> <category androID:name="androID.intent.category.HOME"/> <category androID:name="androID.intent.category.DEFAulT" /> </intent-filter> </activity>
FakeHome.java@H_419_1@
@H_419_1@
public class FakeHome extends Activity {}
某处@H_419_1@
@H_419_1@
if(!isMyLauncherDefault()) { PackageManager p = getPackageManager();Componentname cN = new Componentname(Activity.this, FakeHome.class);p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);Intent selector = new Intent(Intent.ACTION_MAIN);selector.addcategory(Intent.category_HOME); startActivity(selector);p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_Disabled, PackageManager.DONT_KILL_APP); }
总结 以上是内存溢出为你收集整理的android:以编程方式选择默认启动器全部内容,希望文章能够帮你解决android:以编程方式选择默认启动器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)