最近项目要求代码实现APN的建立以及切换,翻阅许多网页,获得一个结论,Android4.0以上,APN权限被禁用,只有系统应用才可用,因而便想办法把本身的应用变成系统应用,经过Android Linux 命令终于将本身的APK嵌入到系统中(/system/app目录下),可是一运行本身的程序,就直接蹦了。 java
下面把代码贴出来,请大侠指教,急急急! android
Main.Activity的oncreate中 app
String appName = getString(R.string.app_name); RootTools.debugMode = true; if(RootTools.isAccessGiven()){ Toast.makeText(context, "授予权限成功", Toast.LENGTH_SHORT).show(); List<String> commands = new ArrayList<String>(); commands.add("su"); commands.add("mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system");// 让分区可写 if(RootTools.exists("/system/app/" + appName + ".apk")){ commands.add("rm /system/app/" + appName + ".apk"); } commands.add("cat /mnt/sdcard/360Download/Android.apk > /system/app/" + appName + ".apk"); commands.add("mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system");// 还原分区属性,只读 commands.add("exit"); Command command = null; try { command = RootTools.getShell(true).add(new MyCommand(1, commands.toArray(new String[commands.size()]))); command.waitForFinish(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if(command!=null){ } ApnUtils.init(this);//本身写的新增APN,并切换APN }else{ Toast.makeText(context, "授予权限失败", Toast.LENGTH_SHORT).show(); }
上面RootTools来RootTools.jar,AndroidManifest.xml中已经添加了权限: this
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>