2010-11-25 84 views
7

我正在尝试阅读Android上可用的主屏幕小部件列表。 我可以用用如何获取已安装的窗口小部件列表?

Intent myIntent = new Intent(Intent.ACTION_MAIN, null); 
myIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> appsInfo = MyActivity.getPackageManager().queryIntentActivities(myIntent, 0); 

可用的应用程序列表填充一个网格,不是通过每个迭代ResolveInfo。
我该怎么做可用的主屏幕小部件?我想用与出现的相同列表填充网格,不断触摸屏幕并从弹出窗口中选择“窗口小部件”。

回答

6

致电getInstalledProviders()AppWidgetManager上。

+0

非常感谢您!这样做! – lorenzoff 2010-11-26 09:39:42

+0

这将有时抛出android.os.TransactionTooLargeException。我找不到为什么...... – 2017-08-10 10:30:40

9

至于建议的CommonsWare,这里是提取部件

AppWidgetManager manager = AppWidgetManager.getInstance(this); 
List<AppWidgetProviderInfo> infoList = manager.getInstalledProviders(); 
for (AppWidgetProviderInfo info : infoList) { 
    Log.d(TAG, "Name: " + info.label); 
    Log.d(TAG, "Provider Name: " + info.provider); 
    Log.d(TAG, "Configure Name: " + info.configure); 
} 

各种其他值列表运行的代码可提取更多的参考看到AppWidgetProviderInfo

相关问题