Nac*_*ive 12 android android-5.0-lollipop
我正在编写一个小应用程序,只有我会使用,我想在root的android 4.5设备上实际启用/禁用我的移动数据(我正在为Nexus 4运行自定义Android L).
我已经找了一会儿,我找到了反射的方法,直到android 4.3.我也看过这个帖子中的方法在Android 4.4.2上以编程方式切换移动数据,但这需要cyanogenmod.
从我在互联网上找到的内容来看,这对于非root应用来说是不可能的,但我的问题是:
有什么我可以用我的root权限来完成这个吗?
Slv*_*v3r 10
我在互联网上创造了这种方法; 它在rooted android 5.0.1 上工作正常基本上你必须传递true,如果你想要启用连接,否则返回false,以及你的应用程序的上下文.
private final static String COMMAND_L_ON = "svc data enable\n ";
private final static String COMMAND_L_OFF = "svc data disable\n ";
private final static String COMMAND_SU = "su";
public static void setConnection(boolean enable,Context context){
String command;
if(enable)
command = COMMAND_L_ON;
else
command = COMMAND_L_OFF;
try{
Process su = Runtime.getRuntime().exec(COMMAND_SU);
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
outputStream.writeBytes(command);
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
try {
su.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
outputStream.close();
}catch(IOException e){
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
请报告某些设备是否存在问题.
编辑:现在也兼容android 5.1 Credit
用这个
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
Method methodSet = tm.class.getDeclaredMethod( "setDataEnabled", boolean.class);
methodSet.invoke(tm, true);
Run Code Online (Sandbox Code Playgroud)
编辑:这需要权限MODIFY_PHONE_STATE,这是系统或签名级别权限。
理想情况下,您可以使用此代码创建一个可运行的 jar 文件并使用
export CLASSPATH=<jar path>
exec app_process <jar-dir-path> your.package.name.classname "$@"
Run Code Online (Sandbox Code Playgroud)
来自su外壳。
| 归档时间: |
|
| 查看次数: |
4976 次 |
| 最近记录: |