您的位置:首页 > 移动开发 > Android开发

android 完美无(隐藏)图标启动软件

2013-05-09 11:23 387 查看
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>


这段代码

<category android:name="android.intent.category.LAUNCHER" />

就是在应用列表创建图标,这段代码注释掉就在应用列表里面消失(但是在设置-应用列表可以显示)。

那我没界面怎么启动???通过广播BroadcastReceiver 监听拨打特定电话启动软件就可以。

public class BroadCastTool extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
// 如果是拨打电话
if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL"))
{
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
if(phoneNumber.equals("123456")){
//Intent你要启动的程序
}
关于配置文件权限声明这里就不写了。

但是这段代码在4.0以后有问题,好像4.0的广播机制变了,4.0之前只要安装应用程序广播就启动了。4.0之后要启动程序广告才生效。因此我们4.0之后要解决就要先启动程序。 首先 我们

<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>
声明依旧,要不没图标启动不了。。

启动后我们需要在首个启动Activity中

PackageManager p = getPackageManager();
p.setComponentEnabledSetting(getComponentName(),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);


COMPONENT_ENABLED_STATE_DISABLED
表示在应用列表隐藏禁止。这样声明后如果我们要广播启动这个activity发现异常,因为已经禁止了,所有我们把这个类重新复制(不要把这个方法加进去)粘贴后起个新名字,广播中启动该类吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: