我需要隐藏应用程序图标。
并通过拨号运行程序
示例:*12345#
我无法运行已隐藏的程序。
隐藏应用:
PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, com.example.broadcastreciver.MainActivity.class); // activity which is first time open in manifiest file which is declare as <category android:name="android.intent.category.LAUNCHER" />
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
运行主 Activity :
Intent appIntent = new Intent(context, Blank.class);
appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(appIntent);
这是 AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".IncomingSms" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
<activity
android:name=".Blank"
android:label="@string/title_activity_blank" >
</activity>
</application>
最佳答案
如果禁用 Activity ,则无法启动它。您真正想要做的是禁用或删除 <intent-filter>
在 Activity 上。不幸的是,无法删除甚至检查 list Intent 过滤器(请参阅 this bug)。
你可以做的是定义一个 <activity-alias>
有 <intent-filter>
s,并改为启用/禁用此组件。当 Activity 别名被禁用时,您仍然可以使用隐式 Intent 启动目标 Activity ,但应用程序不应出现在启动器中,因为禁用的组件是具有 action.MAIN 和 category.LAUNCHER Intent 过滤器的组件.
关于android - 隐藏应用程序图标并运行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129197/