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

Mur*_*vel 7 workspace android widget android-launcher

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

小智 9

  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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Moh*_*bah -2

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

\n\n

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

\n\n

首先我们需要向 android 清单 xml 添加 INSTALL_SHORTCUT 权限。

\n\n
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
private void addShortcut() {\n    //Adding shortcut for MainActivity \n    //on Home screen\n    Intent shortcutIntent = new Intent(getApplicationContext(),\n            MainActivity.class);\n\n    shortcutIntent.setAction(Intent.ACTION_MAIN);\n\n    Intent addIntent = new Intent();\n    addIntent\n            .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);\n    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "HelloWorldShortcut");\n    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,\n            Intent.ShortcutIconResource.fromContext(getApplicationContext(),\n                    R.drawable.ic_launcher));\n\n    addIntent\n            .setAction("com.android.launcher.action.INSTALL_SHORTCUT");\n    getApplicationContext().sendBroadcast(addIntent);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意我们如何创建保存目标活动的shortcutIntent 对象。该意图对象作为 EXTRA_SHORTCUT_INTENT 添加到另一个意图中。最后我们广播了新的意图。这会添加一个快捷方式,其名称为\nEXTRA_SHORTCUT_NAME,图标由 EXTRA_SHORTCUT_ICON_RESOURCE 定义。\n注意:这里值得注意的一件事是,当您定义从快捷方式调用的 Activity 时,必须定义 android:exported=\xe2\x80\x9dtrue\标签中的 xe2\x80\x9d 属性。

\n\n

从主屏幕卸载快捷方式:

\n\n

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

\n\n

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

\n\n
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
private void removeShortcut() {\n\n    //Deleting shortcut for MainActivity \n    //on Home screen\n    Intent shortcutIntent = new Intent(getApplicationContext(),\n            MainActivity.class);\n    shortcutIntent.setAction(Intent.ACTION_MAIN);\n\n    Intent addIntent = new Intent();\n    addIntent\n            .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);\n    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "HelloWorldShortcut");\n\n    addIntent\n            .setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");\n    getApplicationContext().sendBroadcast(addIntent);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

你可以在这里尝试这个演示

\n

  • 这会创建快捷方式,而不是小部件。 (11认同)