dav*_*idk 14 android android-widget
我为Android的Honecomb之前版本创建了三个不同大小的app小部件,为Honeycomb及以后创建了一个可调整大小的可滚动listview小部件.
由于小部件提供相同的功能,而Honeycomb的目标功能可以调整大小,我想在API级别12或更高版本上删除其他版本的小部件.这有可能吗?
据我所知,如果可以找到AppWidgetProviderInfo资源文件,那么似乎没有任何方法可以禁止小部件被AppWidgetService注册.因此,似乎我只能在更高版本中包含小部件,但不能排除在以早期API版本为目标的xml文件夹中定义的版本.
xba*_*esx 19
OP已经得到了他的解决方案,但对于我们其他人来说,我们可以利用boolxml中的值并在不同的资源目录中以不同方式设置它们.
所以你AndroidManifest看起来像这样:
<receiver
android:label="@string/app_widget_small"
android:enabled="@bool/is_pre_api_11">
<!-- App Widget Stuff Here -->
</receiver>
<receiver
android:label="@string/app_widget_large"
android:enabled="@bool/is_pre_api_11">
<!-- App Widget Stuff Here -->
</receiver>
<receiver
android:label="@string/app_widget_resizeable"
android:enabled="@bool/is_post_api_11">
<!-- App Widget Stuff Here -->
</receiver>
Run Code Online (Sandbox Code Playgroud)
并在/res/values/attrs.xml:
<resources>
<bool name="is_pre_api_11">true</bool>
<bool name="is_post_api_11">false</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后在/res/values-v11/attrs.xml:
<resources>
<bool name="is_pre_api_11">false</bool>
<bool name="is_post_api_11">true</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
现在,您的API 10及以下版本将有两个应用程序小部件(小型和大型),而API 11及更高版本将具有一个可调整大小的应用程序小部件.
如果它是具有pre-HC或HC实现的单个app小部件,则可以将它们合并为一个AppWidgetProvider并使用res/xml-v11/和res/xml/具有不同的元数据.
但是,我能想到处理你的场景的唯一方法是AppWidgetProviders在manifest(android:enabled="false")中标记一些禁用,然后在你的应用程序的第一次运行时启用和禁用你的提供程序,基于android.os.Build.VERSION使用PackageManager和setComponentEnabledSetting(),给你正确的.因为在Android 3.1+上,用户需要启动您的一个活动才能添加应用程序小部件,无论如何,您至少要有应用此逻辑的入口点.
| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |