sharedUserID的使用
来源:互联网 发布:《唯有落花知》 编辑:程序博客网 时间:2024/06/10 09:21
在AndroidManifest.xml的根节点中设置android:sharedUserId="android.uid.system"属性,应用签名时需要跟系统的签名保持一致,即可以用java -jar signapk.jar platform.x509.pem platform.pk8 NBSecu.apk a.apk,编译后的a.apk拥有系统所有权限,相当于系统的“设置”应用。
该应用在不需要root权限的情况下,能够调用系统的任何方法。如下面这些操作:
1.断开/连接某个应用软件的网络
管理应用的联网情况,需要开启防火墙,开启防火墙时,所有的应用都不能联网。所以要遍历所有的应用,设置为可联网。
Method method = Class.forName("android.os.ServiceManager") .getMethod("getService", String.class);IBinder binder = (IBinder) method.invoke(null, new Object[] { NETWORKMANAGEMENT_SERVICE });mNMService = INetworkManagementService.Stub.asInterface(binder);// 设置防火墙为true时,所有的应用都不可联网mNMService.setFirewallEnabled(true);mNMService.setFirewallEgressDestRule("0.0.0.0/0.0.0.0", 53, true);// 已经设置断网的应用final List<Integer> saveList = getSaveAppList(ctx);// 获取所有安装的应用final List<TrafficApp> apps = AppTrafficManager.getInitApps(ctx);new Thread(new Runnable() { public void run() { for (TrafficApp app : apps) { if(!saveList.contains(app.uid)){ // 设置应用可以联网 setUidNetWorkState(app.uid, true); } } }}).start();public static void setUidNetWorkState(int uid, boolean isEnable) { try { // 根据uid设置是否可以联网 mNMService.setFirewallUidRule(uid, isEnable); } catch (RemoteException e) { e.printStackTrace(); }}
aidl的处理:aidl中用不到的方法可以直接删除掉,只保留用到的方法即可。
2.设置数据网络是否可用
Android5.0之前所有应用都可以通过反射调用CONNECTIVITY_SERVICE中的setMobileDataEnabled(boolean enable)方法设置。
Android5.0以上都需要系统权限才可以设置。
Class<?> serviceManager = Class.forName("android.os.ServiceManager");Method method = serviceManager.getDeclaredMethod("getService", String.class);IBinder subBinder = (IBinder) method.invoke(serviceManager.newInstance(), "isub");// android5.0是该方法,5.1中该方法的返回值类型改为int型了long dataSubId = ISub.Stub.asInterface(subBinder).getDefaultDataSubId();IBinder binder = (IBinder) method.invoke(serviceManager.newInstance(), "phone");// android5.0是该方法,5.1中该方法改为setDataEnabled(int subId, boolean enable);ITelephony.Stub.asInterface(binder).setDataEnabledUsingSubId(dataSubId, enabled);
3.挂断电话
Class<?> serviceManager = Class.forName("android.os.ServiceManager");Method method = serviceManager.getMethod("getService", String.class);IBinder binder = (IBinder) method.invoke( serviceManager.newInstance(), "telecom");ITelecomService.Stub.asInterface(binder).endCall();
0 0
- sharedUserID的使用
- sharedUserId的问题
- sharedUserId
- Android 使用sharedUserId共享数据
- sharedUserId 与 uid的对应
- BootChart在Android中的应用 && 签名工具SignApk.jar使用 && shareduserid的使用
- android sharedUserId对程序升级的影响
- 今天遇到一个奇怪的问题 android:sharedUserId有关
- android sharedUserId实现跨Apk的数据共享
- apk,task,android:process与android:sharedUserId的区别
- apk,task,android:process与android:sharedUserId的区别
- Android应用程序的sharedUserId,process与签名总结
- apk,task,android:process与android:sharedUserId的区别
- App添加android:sharedUserId="android.uid.system"的作用
- apk,task,android:process与android:sharedUserId的区别
- SharedUserId 简单 实现两个程序间的通信
- android:sharedUserId让你的程序运行系统方法
- apk,task,android:process与android:sharedUserId的区别
- jsrender页面数据的展示
- ios的单元测试
- java 简单的TCP接收数据与发送数据
- android之--adb环境变量配置
- bat实现ftp上传
- sharedUserID的使用
- 静态内部类的使用场景
- LVTTL与LVCMOS区别
- javascript 原型继承介绍
- 数据结构之栈
- Maven与Ant之间的区别
- android之--为模拟器安装应用
- Axis2开发WebService客户端 的3种方式
- Java基础---异常,包