<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发现异常,因为已经禁止了,所有我们把这个类重新复制(不要把这个方法加进去)粘贴后起个新名字,广播中启动该类吧。