Android 屏蔽指定activity启动(程序锁)
来源:互联网 发布:数据治理成熟度模型 编辑:程序博客网 时间:2024/05/30 05:12
第一个想法就是写一个service监测activity 栈,如果栈顶有更改,则判断其是否为受保护的程序,是,就intent转向自己定义的认证授权activity;否,则什么都不做。
找来找去,sdk没有提供某个回调方法或事件、广播之类的api,只能自己一直while中检测。
于是寻找第二种方法,在源码中找所有service和aidl,也没发现callback或者broadcast,activitymanager除了更改源码,无法在外部让它具有此类功能。
native层?暂不考虑。
现在把示例代码写出来,谁知道不用while的方式去检测activity栈顶情况的方法,请告诉我,谢了。
service 中的代码:
import java.util.List;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.AsyncTask;
import android.os.IBinder;
import android.util.Log;
public class ActvityObserverService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
//循环终止标志
boolean flag=true;
//要保护的程序,也就是个包名了
String pakageName="com.android.mms";
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
//我们将通过activity管理服务获得当前activity栈的内容
final ActivityManager am=(ActivityManager)getSystemService(ACTIVITY_SERVICE);
//这个intent可以写死,因为一直都是转向这个
final Intent mintent=new Intent();
//flag必须是new task,仔细想想service与activity的区别就明白了。
mintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//这个不用说了
mintent.setClass(getApplicationContext(),LockActivity.class);
//一个线程,让我一直检测
AsyncTask taskWatcher=new AsyncTask() {
@Override
protected Object doInBackground(Object... params) {
//把这个while当成看门狗吧。
while(true){
/**我们只需要获得1个RunningTasks,一般情况下,会从栈顶按照传入的个数来获取
一个集合,总有一个activity的,不会报空的请放心
*/
String name=am.getRunningTasks(1).get(0).topActivity.getPackageName();
/**判断当前activity的包是否是属于受保护的
当然,实际情况下是读取数据什么的,获取一个集合
这个集合通常是提前列出系统所有安装的apk包,并让用户选择所得到的
*/
if(pakageName.equals(name)){
startActivity(mintent);
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
taskWatcher.execute(null);
}
}
仅当抛砖引玉,如有不对,望请指正。
- Android 屏蔽指定activity启动(程序锁)
- android 屏蔽指定activity启动(程序锁)
- Android studio启动到指定Activity
- eclipse启动android程序,如何指定模拟器
- Android---其他程序启动自己的Activity
- android 启动另外一个程序的Activity
- Android程序中启动另一个activity
- Android中一个app启动另一个app的指定activity
- Android中一个app启动另一个app的指定activity
- Android中一个app启动另一个app的指定activity
- Android中一个app启动另一个app的指定activity
- Android Activity---启动Activity
- Android Activity---启动Activity
- adb 启动指定的activity
- 启动指定的程序
- 进程,程序启动,Activity
- android activity返回键被dialog屏蔽
- android activity返回键被dialog屏蔽
- javascript常用
- qsort函数
- xml中dom的增加和删除、sax的解析(No.21)
- 窗口鼠标事件的响应 在鼠标窗口中绘制矩形的程序
- 一个通用链表的简单实现
- Android 屏蔽指定activity启动(程序锁)
- 光线追踪试玩
- Webkit HashIterator
- CentOS–root密码忘记的解决办法
- Asp.Net 显示程序集版本号
- 棋盘分割 动态规划 poj 1191
- 没有到绝境的我会不会使出自己最大的努力?
- 9.png导入eclipse报错
- Java连接各种数据库