作者:mobiledu2502863347 | 来源:互联网 | 2023-05-17 14:19
packagecom.songyan.accountrecord;importandroid.app.Service;importandroid.content.BroadcastRece
package com.songyan.accountrecord;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.telephony.TelephonyManager;
/**
* Created by songyan on 2017/6/13.
*/
public class StkShowOrNot extends BroadcastReceiver{
private static final String TAG="StkShoOrNot";
private static final String ACTIVITY="com.android.stk.StkMain";//要进行显示和隐藏的launcher类
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager tm=(TelephonyManager)context.getSystemService(Service
.TELEPHONY_SERVICE);
int state=tm.getSimState();
switchState(context,state);
}
private void switchState(Context context,int state){
switch (state){
case TelephonyManager.SIM_STATE_READY:
enableComponent(context,ACTIVITY);
break;
case TelephonyManager.SIM_STATE_ABSENT:
case TelephonyManager.SIM_STATE_UNKNOWN:
case TelephonyManager.SIM_STATE_PIN_REQUIRED:
case TelephonyManager.SIM_STATE_PUK_REQUIRED:
case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
default:
disableComponent(context,ACTIVITY);
break;
}
}
private void enableComponent(Context context,String klass){
ComponentName name=new ComponentName(context,klass);
PackageManager pm=context.getPackageManager();
pm.setComponentEnabledSetting(name,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
private void disableComponent(Context context,String klass){
ComponentName name=new ComponentName(context,klass);
PackageManager pm=context.getPackageManager();
pm.setComponentEnabledSetting(name,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
}
AndroidManifest.xml添加,为了使开机时就触发事件,需要添加开机权限和开机广播类型