package com.guangli.applock; import java.lang.reflect.Method; import android.app.Activity; import android.app.ActivityManager; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; /** * * @author lance.liang * @version 1.0 * <h>����������档����������Ӧ�ñ�����ʱ��������Activity�������أ���ʾ�������롣</h> */ public class PasswordInutActivity extends Activity implements OnClickListener{ EditText pwdEditText; Button confirmButton; SharedPreferences sPreferences; boolean haveChecked; String packename; int id; ImageView appIcon; TextView appLable; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.password_input); pwdEditText = (EditText) findViewById(R.id.pw); confirmButton = (Button) findViewById(R.id.btn_confirm); appIcon = (ImageView) findViewById(R.id.appIcon); appLable = (TextView) findViewById(R.id.appLable); confirmButton.setOnClickListener(this); sPreferences = getSharedPreferences(Meta.SP_FILE, Activity.MODE_WORLD_READABLE); packename = getIntent().getStringExtra("name"); id = getIntent().getIntExtra("id",0); initAppInfo(); } /** * * ��ȡ�����ص�Ӧ����Ϣ * */ private void initAppInfo(){ PackageManager pManager = getPackageManager(); try { ApplicationInfo info = pManager.getApplicationInfo(packename, PackageManager.GET_META_DATA); appIcon.setImageDrawable(info.loadIcon(pManager)); appLable.setText(info.loadLabel(pManager)); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * ��ť����¼� */ public void onClick(View v) { checked(); } /** * ������֤ */ private void checked(){ String pw = pwdEditText.getText().toString(); if(!pw.equals(sPreferences.getString(Meta.PW,""))){ //password error Toast.makeText(this,getString(R.string.password_error), Toast.LENGTH_LONG).show(); return ; } haveChecked = true; setupService(); this.finish(); } /** * �������ڼ������� */ private void setupService(){ Intent intent = new Intent(); intent.putExtra("passApp",packename); intent.setClass(this,AppStartListenerService.class); this.startService(intent); } /** * */ private void killAppProcess(){ ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); // am.killBackgroundProcesses(packename); try { Method method = Class.forName("android.app.ActivityManager") .getMethod("forceStopPackage",String.class); method.invoke(am,packename); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * ǿ����ת��homeҳ�� */ @Override public void onBackPressed() { if(!haveChecked){ //restart this activity //startActivity(getIntent()); //killAppProcess(); Intent intent = new Intent("android.intent.action.MAIN"); intent.addCategory("android.intent.category.HOME"); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(intent); setupService(); } } @Override protected void onStop() { super.onStop(); } }