最近項目要求代碼實現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"/>