jpi*_*ihl 4 android android-4.4-kitkat android-5.0-lollipop
我有一个 Android 应用程序,它在启动器中有多个入口点。其中一些需要比其他人更高的 SDK 版本,如果设备的 SDK 版本低于他们需要的版本,我想禁用或隐藏这些。
基本上我的清单看起来像这样:
<application
...
<activity
android:name=".Activity1"
...
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Activity2"
...
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
... // more launcher activities follows
</application>
Run Code Online (Sandbox Code Playgroud)
Activity1需要 SDK 版本 19,但Activity2需要 SDK 版本 21。我的最低 SDK 版本是 19。我希望Activity2在 SDK 版本 < 21 的设备上安装应用程序时隐藏。
我知道我可以用这样的onCreate方法进行检查Activity2:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
finish();
return;
}
...
}
Run Code Online (Sandbox Code Playgroud)
但活动显然仍会出现在启动器中。
我也知道这是一个相当独特的问题,对于大多数有同样问题的人来说,最简单也可能是最好的解决方案是不要将多个活动作为启动器活动,但这在我的用例中效果不佳.
请不要在代码中这样做,唯一正确的方法是使用android:enabled="true/false"可以在AndroidManifest.xml文件中的组件上设置的属性,如Activity或BroadcastReceiver。不要对布尔值进行硬编码,而是使用根据 API 级别更改的布尔资源:
values/bools.xml:默认情况下禁用这两个活动
<bool name="activity_1_enabled">false</bool>
<bool name="activity_2_enabled">false</bool>
Run Code Online (Sandbox Code Playgroud)
values-v19/bools.xml:在 SDK 19 上最多 20 个活动 1 已启用,2 已禁用
<bool name="activity_1_enabled">true</bool>
<bool name="activity_2_enabled">false</bool>
Run Code Online (Sandbox Code Playgroud)
values-v21/bools.xml:在 SDK 21+ 上,这两个活动都已启用
<bool name="activity_1_enabled">true</bool>
<bool name="activity_2_enabled">true</bool>
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml
<activity
android:name=".Activity1"
android:enabled="@bool/activity_1_enabled" />
<activity
android:name=".Activity2"
android:enabled="@bool/activity_2_enabled" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |