以编程方式将小部件添加到android中的主屏幕

时间:2014-04-03 06:35:50

标签: android widget workspace android-launcher

我开发了android小部件应用程序,它的工作正常。 现在我的客户要求,当用户安装此应用程序时,它自动需要放在主屏幕顶部位置。这该怎么做?请帮帮我。

3 个答案:

答案 0 :(得分:2)

从Android O开始,在您的应用中,您可以创建系统请求,将小部件固定到支持的启动器上。

  1. 在应用的清单文件中创建小部件
  2. 调用requestPinAddWidget()方法
  3. 请参阅本页底部:https://developer.android.com/preview/features/pinning-shortcuts-widgets.html

答案 1 :(得分:1)

  1. 创建窗口小部件提供程序类
  2. 放入清单
  3. 在按钮上单击要添加到首页的按钮

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    AppWidgetManager mAppWidgetManager = getSystemService(AppWidgetManager.class);

    ComponentName myProvider = new ComponentName(AddWidgetActivity.this, AppWidgetSmall.class);

    Bundle b = new Bundle();
    b.putString("ggg", "ggg");
    if (mAppWidgetManager.isRequestPinAppWidgetSupported()) {
         Intent pinnedWidgetCallbackIntent = new Intent(AddWidgetActivity.this, AppWidgetSmall.class);
         PendingIntent successCallback = PendingIntent.getBroadcast(AddWidgetActivity.this, 0,
                 pinnedWidgetCallbackIntent, 0);

         mAppWidgetManager.requestPinAppWidget(myProvider, b, successCallback);
    }
}

答案 2 :(得分:-1)

请参阅http://viralpatel.net/blogs/android-install-uninstall-shortcut-example/

Android为我们提供了一个intent类com.android.launcher.action.INSTALL_SHORTCUT,可用于向主屏幕添加快捷方式。在下面的代码片段中,我们使用名称HelloWorldShortcut创建活动MainActivity的快捷方式。

首先我们需要将权限INSTALL_SHORTCUT添加到android manifest xml。

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

addShortcut()方法在主屏幕上创建一个新的快捷方式。

private void addShortcut() {
    //Adding shortcut for MainActivity 
    //on Home screen
    Intent shortcutIntent = new Intent(getApplicationContext(),
            MainActivity.class);

    shortcutIntent.setAction(Intent.ACTION_MAIN);

    Intent addIntent = new Intent();
    addIntent
            .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "HelloWorldShortcut");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
            Intent.ShortcutIconResource.fromContext(getApplicationContext(),
                    R.drawable.ic_launcher));

    addIntent
            .setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    getApplicationContext().sendBroadcast(addIntent);
}

注意我们如何创建保存目标活动的shortcutIntent对象。此intent对象作为EXTRA_SHORTCUT_INTENT添加到另一个intent中。最后,我们广播新的意图。这会添加一个名称为的快捷方式 EXTRA_SHORTCUT_NAME和EXTRA_SHORTCUT_ICON_RESOURCE定义的图标。 注意:有一点值得注意的是,当您定义从快捷方式调用的活动时,您必须在标记中定义android:exported =“true”属性。

从主屏幕卸载快捷方式:

与安装类似,卸载或删除Android中的快捷方式使用Intent(UNINSTALL_SHORTCUT)来执行任务。在下面的代码中,我们删除了主屏幕上添加的快捷方式。

我们再次需要执行卸载快捷方式任务的权限。将以下权限添加到Android清单xml。

<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

removeShortcut()方法与addShortcut()完全相反。除了removeShortcut调用UNINSTALL_SHORTCUT intent之外,大多数代码都是类似的。

private void removeShortcut() {

    //Deleting shortcut for MainActivity 
    //on Home screen
    Intent shortcutIntent = new Intent(getApplicationContext(),
            MainActivity.class);
    shortcutIntent.setAction(Intent.ACTION_MAIN);

    Intent addIntent = new Intent();
    addIntent
            .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "HelloWorldShortcut");

    addIntent
            .setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
    getApplicationContext().sendBroadcast(addIntent);
}

您可以尝试此演示HERE