android-程序锁解决重复解锁的问题

问题描述

程序锁解决重复解锁的问题
我的程序锁老是重复解锁界面,下面是主要代码,请大神帮忙如何解决
根据这个类来检测要运行的程序是否要解锁
public class lockTask extends TimerTask{

private static Context mContext;private ActivityManager activityManager;int i=0;public lockTask(Context context){    mContext=context;    activityManager=(ActivityManager) context.getSystemService(""activity"");}public void run(){    ComponentName topActivity=activityManager.getRunningTasks(1).get(0).topActivity;    String packageName=topActivity.getPackageName();//得到要运行的程序包    boolean result=find(packageName);    if(result){        Intent intent=new Intent();        intent.putExtra(""packageName""packageName);        intent.setClassName(""com.example.competition""com.example.competition.unlock"");        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        mContext.startActivity(intent);    }}public boolean find(String packageName){    boolean result=false;    SQLiteDatabase db=PwdDAO.getInstance().getHelper().getWritableDatabase();    if(db.isOpen()){        Cursor cursor=db.rawQuery(""select packageName from tb_pname where packageName=?""new String[]{packageName});        if(cursor.moveToFirst()){            result=true;        }        cursor.close();        db.close();    }    return result;}public static Context getContext(){    return mContext;}

}
这是service类
public class lockService extends Service{
private Timer mtimer;
public static final int FOREGROUND_ID=0;

public IBinder onBind(Intent arg0) {    return null;}private void startTimer(){    if(mtimer==null){        mtimer=new Timer();        lockTask locktask=new lockTask(this);        mtimer.schedule(locktask 0L100L);    }}public void onCreate(){    super.onCreate();}public int  onStartCommand(Intent intentint flagsint startId){    startForeground(FOREGROUND_IDnew Notification());    startTimer();    return super.onStartCommand(intent flags startId);}public void onDestroy(){   //当停止服务时执行    stopForeground(true);    mtimer.cancel();    mtimer.purge();    mtimer=null;    super.onDestroy();}

}
这是解锁的代码
public class unlock extends ActionBarActivity{
String activityName;
SharedPreferences preference;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
final Intent intent=getIntent();//得到传递来的意图对象
String pName=intent.getStringExtra(""packageName"");
setContentView(R.layout.unlock);
preference=getSharedPreferences(""password""Context.MODE_PRIVATE);
final EditText et_unlock=(EditText)findViewById(R.id.et_unlock);//获得输入密码的编辑框
Button but_unlock_ok=(Button)findViewById(R.id.but_unlock_ok);
but_unlock_ok.setOnClickListener(new OnClickListener(){

        public void onClick(View v){            if(TextUtils.isEmpty(et_unlock.getText().toString())){              Toast.makeText(getBaseContext()密码不能为空""Toast.LENGTH_LONG).show();            }            else if(!(et_unlock.getText().toString().equals(preference.getString(""pwd""")))){                Toast.makeText(getBaseContext()密码输入错误""Toast.LENGTH_LONG).show();            }            else{                String packageName=intent.getStringExtra(""packageName"");                Toast.makeText(getBaseContext()包名""+packageNameToast.LENGTH_LONG).show();                PackageManager pm=getPackageManager();                Intent resolveIntent=new Intent(Intent.ACTION_MAIN);                resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);                List<ResolveInfo> resolve=pm.queryIntentActivities(resolveIntentPackageManager.MATCH_DEFAULT_ONLY);                Collections.sort(resolvenew ResolveInfo.DisplayNameComparator(pm));//将获取到的ResolveInfo进行排序                for(ResolveInfo reInfo:resolve){                    if(reInfo.activityInfo.packageName.equals(packageName.toString())){                        activityName=reInfo.activityInfo.name;//获取应用程序启动activity的名字                    }                }                Intent lanchIntent=new Intent();                lanchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                lanchIntent.setComponent(new ComponentName(packageNameactivityName));                startActivity(lanchIntent);            }                   }    });}

}

解决方案

mtimer.schedule(locktask 0L100L); 这行代码不是每个100ms就执行一次 locktask吗??

解决方案二:
你这样一直运行,不是死循环吗? 无限检查,无限弹界面; 你打印 packageName 看看是什么?

时间: 2024-08-19 08:18:34

android-程序锁解决重复解锁的问题的相关文章

android手机程序锁如何重复广播重复解锁

问题描述 android手机程序锁如何重复广播重复解锁 求助,现在实现了在我写的应用中给手机中的软件加锁,应用接收到广播之后,打开程序进入程序锁页面后输入密码进入应用,我想问一下,怎么实现解锁后,不停止service的情况下,下次进入这个程序还继续输入密码,重复输入过程,只要我的应用中不给他解锁,他就一直有输入密码页面,我试了一下,输入密码正确后,加锁页面就finish掉后,进入应用,但是他又弹出来了.

Android程序锁的实现以及逻辑_Android

本项目是一个比较有趣的项目源码,可以给其他项目加锁,程序锁的原理是一个"看门狗"的服务定时监视顶层activity,如果activity对应的包名是之前上锁的应用程序的,则弹出一个页面要求输入解锁密码. 效果如下: 1.基本思路 ①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中 ②.已加锁+未加锁 == 手机中所有应用(AppInfoProvider) 2.已加锁和未加锁的数据适配器 class MyAdapter ex

Android程序锁的实现以及逻辑

本项目是一个比较有趣的项目源码,可以给其他项目加锁,程序锁的原理是一个"看门狗"的服务定时监视顶层activity,如果activity对应的包名是之前上锁的应用程序的,则弹出一个页面要求输入解锁密码. 效果如下: 1.基本思路 ①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中 ②.已加锁+未加锁 == 手机中所有应用(AppInfoProvider) 2.已加锁和未加锁的数据适配器 class MyAdapter ex

android安全问题(二) 程序锁

某些人有时候会有这样一种需求,小A下载了个软件,只是软件中的美女过于诱惑与暴露,所以他不想让 别人知道这是个什么软件,起码不想让别人打开浏览.而这款软件又没有锁,任何人都可以打开,肿么办呢? 如果打开它的时候需要输入密码,那该多好阿!于是,程序锁这种应用就产生了 程序锁不是最近才有 的,很久之前android就有这种apk了 这一期我们来苛刻如何实现程序加锁功能 首先,我们先明 确一下我们要做的程序具有什么功能 1可以选择需要加锁的程序 2可以设置密码 3可以关 闭程序锁 这里作为演示,我们就尽

Android开发之开门狗在程序锁中的应用实例_Android

本文实例讲述了Android开发之开门狗在程序锁中的应用方法.分享给大家供大家参考,具体如下: protected static final String TAG = "WatchDogService"; private AppLockDao dao; private List<String> lockApps; private ActivityManager am; private Intent lockappintent; @Override public IBinde

android-解决程序锁重复解锁的问题?

问题描述 解决程序锁重复解锁的问题? 我写了一个程序锁,但输入密码,点击确定后,仍然出现解锁界面,请问如何解决?(最好有代码) 解决方案 你的程序判断密码的逻辑有没有问题.你自己没有提供代码,怎么能要求别人提供代码.提供了代码也和你的不配啊. 解决方案二: 判断逻辑有问题,既然成功了,最简单的办法,设置一个变量,表明是否成功 解决方案三: 那肯定有一句比较的代码,把比较的2个数据(我不知道你是用什么存储的)打印出来看就知道哪里错了 解决方案四: 初步估计是判断逻辑出错,导致跳转到另一个activ

Android 开发程序锁应用简单实例_Android

1.基本思路 ①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中 ②.已加锁+未加锁 == 手机中所有应用(AppInfoProvider) 2.已加锁和未加锁的数据适配器 class MyAdapter extends BaseAdapter{ private boolean isLock; /** * @param isLock 用于区分已加锁和未加锁应用的标示 true已加锁数据适配器 false未加锁数据适配器 */ pub

Android程序开发仿新版QQ锁屏下弹窗功能_Android

新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能.经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意. 下面是实现过程. 1.使用Activity,而不是View QQ的弹窗一开始我以为是悬浮View,用WindowManager去添加,但是无论如何就是不显示,后来在朋友提示下换成Activity来实现,在锁屏状态下就能弹窗了. 2.Activity的设置 Activity需要进行以下设置,才可以在锁屏状态下弹窗. 首先是onCreate方法,需要添加

我的android程序方法超出了65535就如何解决了,求解???

问题描述 我的android程序方法超出了65535就如何解决了,求解??? 1C 我的android程序方法超出了65535就如何解决了,求解??? 解决方案 Android 解决65535的限制 使用android-support-multidex解决Dex超出方法数的限制问题让你的应用不再爆棚 解决方案二: 分解成多个apk,或者jar 解决方案三: http://blog.csdn.net/x_i_a_o_h_a_i/article/details/46544341 解决方案四: 很明显