android:以编程方式选择默认启动器

Vishnu Mohan G

我想弹出一个对话框,允许用户选择要设置为默认选项的启动器我试过了

Intent home = new Intent(Intent.ACTION_DEFAULT);
home.addCategory(Intent.CATEGORY_LAUNCHER);
Intent chooser = Intent.createChooser(home, "Launcher");
context.startActivity(chooser);

但是,由此弹出的对话框没有设置默认值的选项。如果已设置默认启动器,则以下代码将不会弹出对话框。

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

如何才能做到这一点?

内尔曼

尝试使用以下内容:

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

如果已经设置了默认操作(yours),则可以先调用:

getPackageManager().clearPackagePreferredActivities(getPackageName());

如果默认操作不是您的默认操作,则无法以编程方式清除它,您可以执行的操作是检查是否将其他应用设置为默认操作并显示一条消息。

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());
}

作为将其他应用程序设置为默认应用程序的一种解决方法,您可以创建一个fake主页,然后安装它(这将迫使系统清除默认应用程序),然后将其卸载...

Manifest.xml

<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

public class FakeHome extends Activity {

}

某处

if (!isMyLauncherDefault()) {           
    PackageManager p = getPackageManager();
    ComponentName cN = new ComponentName(getApplicationContext(), 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);            
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

android:以编程方式选择默认启动器

来自分类Dev

以编程方式启动默认的Android启动器并显示应用程序选择屏幕

来自分类Dev

如何以编程方式设置默认应用启动器?

来自分类Dev

Android无法以编程方式启动启动器活动

来自分类Dev

如何在Android中以编程方式配置启动器活动?

来自分类Dev

如何在Android中以编程方式完成我的自定义启动器

来自分类Dev

更改默认启动器,然后单击“ ANDROID”

来自分类Dev

快捷方式与启动器小部件 (Android)

来自分类Dev

如何在ROM版本中安装默认的AOSP启动器快捷方式?

来自分类Dev

启动默认的Android壁纸选择器

来自分类Dev

Android启动器应用

来自分类Dev

Android Wear启动器

来自分类Dev

Android启动器应用

来自分类Dev

如何调出默认启动器提示?

来自分类Dev

无法在android studio 2.2预览版4中更改android默认启动器图标

来自分类Dev

无法在android studio 2.2预览版4中更改android默认启动器图标

来自分类Dev

Android Gradle v 3.1.3 更新将应用启动器图标设为默认

来自分类Dev

自定义启动器不保留为华为设备中的默认启动器

来自分类Dev

以编程方式设置垫选择默认选项

来自分类Dev

Android启动器图标太小

来自分类Dev

android应用启动器图标

来自分类Dev

如何从启动器隐藏android应用

来自分类Dev

找不到Android启动器活动

来自分类Dev

Android启动器已更改

来自分类Dev

android应用启动器图标

来自分类Dev

如何从启动器隐藏android应用

来自分类Dev

更改启动器活动android吗?

来自分类Dev

在Android库中启动器活动

来自分类Dev

是否可以通过用户选择更改android运行时中的启动器图标?

Related 相关文章

热门标签

归档