在Android开发中,Activity界面在特定情况下不需要或不允许让用户看见,可以使其隐藏
方式一 可以在在AndroidManifest xml中设置enable设为ture/false,
<activity android:name=".hookpostnetwork.PartnerNetworkActivity"
android:theme="@style/AppThemeOpaque"
android:enabled="ture">
<intent-filter>
<action android:name="com.android.net.GET_CONNECTED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
方式二 在代码中动态设置,0表示没有声明,1表示为ture,2表示声明为false
if(!"XXX".equals(Build.PRODUCT)) {
ComponentName networkActivity = new ComponentName(getApplicationContext(), "com.google.android.tvsetup.partnercustomizer.hookpostnetwork.PartnerNetworkActivity");
PackageManager packageManager = getApplicationContext().getPackageManager();
int i = packageManager.getComponentEnabledSetting(networkActivity);
Log.d(TAG, "getComponentEnabledSetting: " + i);
packageManager.setComponentEnabledSetting(networkActivity, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
// packageManager.setComponentEnabledSetting(networkActivity, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
结论
对应在manifest中显示声明为 android:enabled=”true”时,无论动态修改值(0|1|2),使用静态检查时都是返回true;当动态修改它的值为2时,收不到广播,(0|1)时能收到。
manifest中显示声明为 android:enabled=”false”时,如果程序动态将它的值修改成1时,使用静态检查可以找到组件,且其值仍然为false,但是可以收到广播,其它值(0|2)时,找不到对应组件,也收不到广播。界面不显示,默认的google检查界面也不显示
测试结论得:manifest中显示声明为android:enabled=”true”,动态设置为false才能满足效果
android:enabled=”false”,动态设置为ture, 自定义得网络界面不显示,默认网络也不显示