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

实现桌面应用图标的动态隐藏和显示,触发事件为SIM卡的状态

2017-06-14 11:18 656 查看
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添加,为了使开机时就触发事件,需要添加开机权限和开机广播类型

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name="com.songyan.accountrecord.StkShowOrNot">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.SIM_STATE_CHANGED" />
</intent-filter>
</receiver>



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android
相关文章推荐