我正在编写一个应用程序,当用户指示我的应用程序这样做时,应该能够将小部件(仅文本框)添加到用户手机的主屏幕上。 我该如何做到这一点?
我知道我可以添加应用程序小部件,但是如何添加更多小部件呢?
我正在编写一个应用程序,当用户指示我的应用程序这样做时,应该能够将小部件(仅文本框)添加到用户手机的主屏幕上。 我该如何做到这一点?
我知道我可以添加应用程序小部件,但是如何添加更多小部件呢?
EXTRA_APPWIDGET_ID
,但没有成功。我猜我的问题是,我的应用程序不是一个启动器,而是一个带有小部件的常规应用程序。 - madlymad这个问题很久以前就有答案了,但是如果有人偶然发现了这个问题,我想提供一个最新的答案。
从Android O(API 26)开始,您现在可以将小部件固定到用户的启动器中!
只需在应用程序的AndroidManifest文件中创建小部件,并使用AppWidgetManager来请求将小部件固定到启动器。请注意,这取决于启动器是否支持此功能,因此在请求固定它之前,必须调用AppWidgetManager的isRequestPinAppWidgetSupported()方法。
这里是谷歌提供的更详细的文档:https://developer.android.com/preview/features/pinning-shortcuts-widgets.html#widgets
希望这能帮到你!
编辑:看起来自我回答后文档页面已更改。以下链接更有帮助,其中提供了如何将小部件固定到启动器的代码示例:https://developer.android.com/guide/topics/appwidgets/#Pinning
看起来Dalvik Droid的链接又更新了,最新的链接在requestPinAppWidget
例如: 在MainActivity.java中:
private void requestToPinWidget(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
AppWidgetManager appWidgetManager =
getSystemService(AppWidgetManager.class);
ComponentName myProvider =
new ComponentName(this, AppWidget.class);
assert appWidgetManager != null;
if (appWidgetManager.isRequestPinAppWidgetSupported()) {
Intent pinnedWidgetCallbackIntent = new Intent(this, MainActivity.class);
PendingIntent successCallback = PendingIntent.getBroadcast(this, 0,
pinnedWidgetCallbackIntent, PendingIntent.FLAG_UPDATE_CURRENT);
appWidgetManager.requestPinAppWidget(myProvider, null, successCallback);
}
}
}
在你的代码中无论何时调用requestToPinWidget()
函数,都将弹出提示询问用户是否添加小部件到桌面。
需要注意的是,这并不会添加到用户的主屏幕,而是会追加到显示所有应用程序的页面: