手机卫士 第二天主界面的开发
2014-08-03 22:26
183 查看
一、主界面用到了一个GridView的控件
a) GridView和ListView的适配器是一样的。不同的是GridView一列显示多个Item,而ListView只能显示一个条目。GridView的适配器如下
二、为GridView设置数据适配器,并设置单击和长按事件
三、判断当前应用是否具有设备管理权限,如果没有打开激活设备管理权限的界面
四、用户单机手机防盗条目时判断用户是否设置过密码,如果没有设置过密码,则弹出设置密码提醒框
五、打开主界面时判断是否应该启动些服务
六、如果用户已经ROOT得到该root权限
a) GridView和ListView的适配器是一样的。不同的是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(); }
相关文章推荐
- 手机卫士开发第二天
- 开发手机卫士第二天,自定义style,对话框
- 安卓开发小练手之手机卫士开发(2)——主界面
- Android项目实战--手机卫士20--拿到已经安装了的程序以及程序管理主界面
- Android项目实战--手机卫士20--拿到已经安装了的程序以及程序管理主界面
- Android手机卫士的第二天
- [android] 手机卫士欢迎细节和主界面
- 手机卫士 第二天
- Android项目实战--手机卫士开发系列教程
- 手机卫士 第四天高级工具开发
- 手机卫士开发学习1
- 安卓开发小练手之手机卫士开发(4)——手机防盗设置界面
- Android项目实战--手机卫士20--拿到已经安装了的程序以及程序管理主界面
- 手机卫士开发第八天
- 安卓_手机卫士_第二天(GridView,自定义组合控件实现设置页项,自定义对话框)
- 手机卫士开发_setting界面和自动更新的设置
- 安卓手机卫士开发学习第一天--Splash界面
- 手机卫士项目(第二天)
- 安卓开发小练手之手机卫士开发(3)——手机防盗界面的开启
- 3G手机Android应用开发视频教程_黎活明老师的视频(第二天课程)总共有八天课程