手机卫士 第二天主界面的开发

一、主界面用到了一个GridView的控件

a) GridViewListView的适配器是一样的。不同的是GridView一列显示多个Item,而ListView只能显示一个条目。GridView的适配器如下

public class MenuAdpater extends BaseAdapter {

 

private Context context;

private LayoutInflater inflater;

private ImageView iv_item;

private TextView tv_item;

private SharedPreferences sp;

 

public MenuAdpater(Context context) {

this.context = context;

inflater = LayoutInflater.from(context);

sp = context.getSharedPreferences("config", context.MODE_PRIVATE);

}

 

private static String[] names = { "手机防盗", "通讯卫士", "软件管理", "任务管理", "流量管理",

"手机杀毒", "系统优化", "高级工具", "设置中心" };

private static int[] icons = { R.drawable.safe, R.drawable.callmsgsafe,

R.drawable.netmanager, R.drawable.taskmanager, R.drawable.app,

R.drawable.trojan, R.drawable.sysoptimize, R.drawable.atools,

R.drawable.settings };

 

@Override

public int getCount() {

// TODO Auto-generated method stub

return names.length;

}

 

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return position;

}

 

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

 

@Override

public View getView(int position, View convertView, ViewGroup parent) {

 

View view = inflater.inflate(R.layout.item_main_gridview, null);

iv_item = (ImageView) view.findViewById(R.id.iv_item);

tv_item = (TextView) view.findViewById(R.id.tv_item);

iv_item.setImageResource(icons[position]);

String itemText;

if (position != 0)

itemText = names[position];

else {

itemText = sp.getString("itemText", names[position]);

}

tv_item.setText(itemText);

return view;

}

}


二、为GridView设置数据适配器,并设置单击和长按事件

gv_menu = (GridView) findViewById(R.id.gv_main_menu);

gv_menu.setAdapter(new MenuAdpater(this));

// 设置单击条目事件

gv_menu.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view,

int position, long id) {

String funcName = ((TextView) view.findViewById(R.id.tv_item))

.getText().toString().trim();

Toast.makeText(getApplicationContext(), funcName, 0).show();

 

switch (position) {

case 0:// 点击的是手机防盗

if (isNeedInputPwd()) {// 没有设置过密码

showSettingPassword();// 显示设置密码对话框

} else {//

 

showInputPassword();

}

break;

case 1:

showActiviy(BlackListActivity.class);

break;

case 2:

showActiviy(AppManagerActivity.class);

break;

case 3:

showActiviy(TaskManagerActivity.class);

break;

case 4:// 流量管理

// showActiviy(TaskManagerActivity.class);

break;

case 5:// 手机杀毒

showActiviy(KillVirusActivity.class);

break;

case 6:// 系统优化

break;

case 7:

 

showActiviy(AtoolsActivity.class);

break;

case 8:

 

showActiviy(SettingCenterActivity.class);

break;

 

default:

break;

}

}

});

// 设置单击条目的长按事件

gv_menu.setOnItemLongClickListener(new OnItemLongClickListener() {

 

@Override

public boolean onItemLongClick(AdapterView<?> parent,

final View view, int position, long id) {

if (position == 0) {

AlertDialog.Builder builder = new Builder(MainActivity.this);

builder.setTitle("修改条目的名称");

builder.setMessage("请输入修改后的的名字");

final EditText editText = new EditText(MainActivity.this);

editText.setHint("请输入文本");

builder.setView(editText);

builder.setPositiveButton(

"确定",

new android.content.DialogInterface.OnClickListener() {

 

@Override

public void onClick(DialogInterface dialog,

int which) {

String itemText = editText.getText()

.toString().trim();

if (itemText != null

&& !"".equals(itemText)) {

Editor editor = sp.edit();

editor.putString("itemText", itemText);

editor.commit();

} else {

Toast.makeText(getApplicationContext(),

"条目名称不能为空!", 0).show();

return;

}

((TextView) view.findViewById(R.id.tv_item))

.setText(itemText);

}

});

builder.setNegativeButton(

"取消",

new android.content.DialogInterface.OnClickListener() {

 

@Override

public void onClick(DialogInterface dialog,

int which) {

Toast.makeText(getApplicationContext(),

"名称取消修改", 0);

}

});

builder.create().show();

}

return false;

}

});


三、判断当前应用是否具有设备管理权限,如果没有打开激活设备管理权限的界面

ComponentName myComponentName = new ComponentName(this,

DeviceAdminSample.class);

DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);

// 立刻打开激活设备管理器的界面

if (!dpm.isAdminActive(myComponentName)) {

Intent intent = new Intent(

DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);

intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,

myComponentName);

intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,

"激活设备管理器权限才可以一键锁屏哟,敬请期待更多惊喜...");

startActivity(intent);

}


四、用户单机手机防盗条目时判断用户是否设置过密码,如果没有设置过密码,则弹出设置密码提醒框

public void showSettingPassword() {

builder = new Builder(this);

View view = View.inflate(this,

R.layout.lostphone_settingpwd_dialog_activity, null);

et_pwd_setting_first = (EditText) view

.findViewById(R.id.et_pwd_setting_first);

et_pwd_setting_second = (EditText) view

.findViewById(R.id.et_pwd_setting_second);

btn_pwd_cancle = (Button) view.findViewById(R.id.btn_pwd_cancle);

btn_pwd_confirm = (Button) view.findViewById(R.id.btn_pwd_confirm);

btn_pwd_cancle.setOnClickListener(new OnClickListener() {

 

@Override

public void onClick(View v) {

dialog.dismiss();

}

});

btn_pwd_confirm.setOnClickListener(new OnClickListener() {

 

@Override

public void onClick(View v) {

String pwd1 = et_pwd_setting_first.getText().toString();

String pwd2 = et_pwd_setting_second.getText().toString();

if (TextUtil.isSameText(pwd1, pwd2)) {

System.out.println(pwd1 + "------------" + pwd2);

Editor editor = sp.edit();

editor.putString("pwd_in_lostphone", MD5Utils.encode(pwd1));

editor.commit();

dialog.dismiss();

} else {

Toast.makeText(MainActivity.this, "两次输入的密码不一致或长度太短,请重新输入!",

0).show();

}

}

});

dialog = builder.create();

dialog.setView(view, 0, 0, 0, 0);

dialog.show();

}


五、打开主界面时判断是否应该启动些服务

// 开机自动启动,或者在第一次安装的时候启动

if (sp.getBoolean("isShowPhoneAddress", true)) {

this.startService(PhoneAddressService.class);

}

if (sp.getBoolean("isDogWatch", true)) {

this.startService(WatcherDogService.class);

}

if (sp.getBoolean("isAutoSmsPhoneSafety", true)) {

this.startService(CallSMSSaftyService.class);

}


六、如果用户已经ROOT得到该root权限

// 获取Root权限

try {

Runtime.getRuntime().exec("su");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值