80,351
社区成员
发帖
与我相关
我的任务
分享
Thread thread = new Thread(new Runnable() {
public void run() {
while (flag) {
System.out.println("////////////////////////////////////////////////////");
String str1;// log
String str2;// 类名
String str3;// 包名
try {
// Log.e(TAG, "=========================");
Runtime localRuntime1 = Runtime.getRuntime();
String[] arrayOfString1 = new String[2];
arrayOfString1[0] = "logcat";
arrayOfString1[1] = "-c";
Process localProcess1 = localRuntime1.exec(arrayOfString1);
int i = localProcess1.waitFor();
Runtime localRuntime2 = Runtime.getRuntime();
String[] arrayOfString2 = new String[2];
arrayOfString2[0] = "logcat";
arrayOfString2[1] = "ActivityManager:I *:S";
Process localProcess2 = localRuntime2.exec(arrayOfString2);
InputStream localInputStream = localProcess2.getInputStream();
InputStreamReader reader = new InputStreamReader(localInputStream);
BufferedReader localBufferedReader = new BufferedReader(reader);
str1 = localBufferedReader.readLine();//获取log
am = (ActivityManager) ProtectorService.this.getSystemService("activity");
ComponentName componentName = ((ActivityManager.RunningTaskInfo) ProtectorService.this.am
.getRunningTasks(1).get(0)).topActivity;
str2 = componentName.getClassName();
str3 = componentName.getPackageName();
//是否为启动一个应用
boolean start = str1.contains("android.intent.category.LAUNCHER");
//是否被保护/密码锁应用
boolean protector = mRunProList.contains(str3) || str3.equals("com.innofidei.protector");
System.out.println("ispass==" + !isPass+";start="+start+";protector="+protector);
//如果应用被保护,且没有通过密码验证,则进入密码验证界面
//isPass标志应用是否通过密码验证
if (start && protector && !isPass) {
System.out.println("----------in------------>");
// 如果是地址薄和拨号应用,则通过log来确定访问的是哪个tab页
if (str3.equals("com.android.contacts")) {
Intent intent = new Intent();
intent.addCategory("android.intent.category.LAUNCHER");
intent.setAction("android.intent.action.MAIN");
if (str1.contains("DialtactsContactsEntryActivity")) {
str2 = "com.android.contacts.DialtactsContactsEntryActivity";
} else if (str1.contains("DialtactsActivity")) {
str2 = "com.android.contacts.DialtactsActivity";
}
intent.setComponent(new ComponentName(str3, str2));
MyApplication.intent = intent;
} else {
MyApplication.intent = am.getRecentTasks(1, 0).get(0).baseIntent;//设置密码验证后需要启动应用的intent
}
Intent lockIntent = new Intent(ProtectorService.this, PasswordLockActivity.class);
lockIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK).putExtra("pkg", str3)
.putExtra("where", "service");
startActivity(lockIntent);//启动密码验证界面
System.out.println("----------finish------------>");
}
isPass = false;//标记设置为false
} catch (Exception localException) {
return;
}
}
}
});
public void onClick(View paramView)
{
String str = "";
switch (paramView.getId())
{
case 2131361831:
case 2131361835:
case 2131361839:
default:
label80: this.mPassEdit.append(str);
case 2131361828:
case 2131361829:
case 2131361830:
case 2131361832:
case 2131361833:
case 2131361834:
case 2131361836:
case 2131361837:
case 2131361838:
case 2131361841:
case 2131361842:
case 2131361840:
}
while (true)
{
return;
str = "1";
break label80:
str = "2";
break label80:
str = "3";
break label80:
str = "4";
break label80:
str = "5";
break label80:
str = "6";
break label80:
str = "7";
break label80:
str = "8";
break label80:
str = "9";
break label80:
str = "0";
break label80:
this.mPassEdit.setText("");
continue;
goHome();
}
}
private void goHome()
{
Intent localIntent1 = new Intent();
localIntent1.setAction("android.intent.action.MAIN");
localIntent1.addCategory("android.intent.category.HOME");
localIntent1.addFlags(329252864);
//这里的intent为什么没有指定是哪个activity呢?我这样写直接回到home界面的
startActivity(localIntent1);
//下边这些代码又是做什么用的呢?看不明白呀
Intent localIntent2 = new Intent("android.intent.action.MAIN", null);
localIntent2.addCategory("android.intent.category.HOME");
if (getPackageManager().queryIntentActivities(localIntent2, 0).size() > 1);
while (true)
{
return;
finish();
}
}