autojs获取fullid_autojspro常用的代码和公共函数搜集整理,史上最全最完整

1 /**2 * 整理者: 家3 * 日期: 201902244 * 妈呀: 整理了一宿,现在是早上6:345 * 功能: 把某些常用的函数集中起来,方便调用6 * 函数来源: 都是群里的大佬写的,稻草人,+攀登,Ai,破晓的星辰,灶猫,家,浩然,白酒煮饭,生僻字大佬,内个谁,Xero,无名小姐,壞蛋┭,锦瑟安年Ω,专业滥竽充数,膜拜以上几位大神,不管你们同意不同意,我都把你们的代码搬到一块了,O(∩_∩)O哈哈~7 * git: https://github.com/snailuncle/autojsCommonFunctions/blob/master/autojsCommonFunctions.js8 */

9

10 //此代码由飞云脚本圈整理提供(www.feiyunjs.com)

11

12 导入模块

13 //function 导入常用函数模块(){

14 //var url='https://raw.githubusercontent.com/snailuncle/autojsCommonFunctions/master/autojsCommonFunctions.js'

15 //var r = http.get(url)

16 //log("code = " + r.statusCode);

17 //var html=r.body.bytes()

18 //files.writeBytes('./autojsCommonFunctions.js',html)

19 //var common=require('./autojsCommonFunctions.js')

20 //return common

21 //}

22 //var common=导入常用函数模块()

23 //log(common)

24 //for(let i=0;i<33;i++){

25 //common.闪光弹('fire in the hole')

26 //}

27

28

29

30

31 [32 '点击控件',33 '铃声',34 '启动app',35 '停止app',36 '卸载app',37 '卸载app没root',38 '清除app数据',39 '启动最新安装的app',40 '停止最新安装的app',41 '卸载最新安装的app',42 '清除最新安装的app数据',43 '静默安装app',44 '获取app图标',45 '控制app联网',46 '获取手机上所有的app名字',47 '点击输入框弹出输入法',48 '使所有输入框点击时都能弹出输入法',49 '失去焦点',50 '是否root',51 '获取指定应用的版本号',52 '打开qq群名片',53 '打开qq名片',54 'qq强制聊天',55 '字节变为gbk中文',56 '最新安装的app',57 '文件修改时间',58 '文件大小',59 '字符串变字节',60 '日期加N天',61 'md5',62 '是横屏还是竖屏',63 '截图',64 '随机字符',65 '获取时间',66 '调整手机音量',67 '微信扫一扫',68 '公共字符串',69 '网络',70 '安卓intent源码',71 '获取手机ip地理位置',72 '替换系统文件',73 '编辑距离',74 '数组交集',75 '提取包含关键字的app',76 '获取页面所有文字',77 '悬浮控制',78 '闪光弹',79 '打开开发者选项',80 '气泡',81 '随机字符串',82 'wifi状态',83 '开关飞行模式',84 '上滑',85 '获取deflate网页内容',86 '获取gzip网页内容'

87 ]88

89

90

91

92

93 var common ={}94 Array.prototype.intersect = function() {95 var result = newArray();96 var obj ={};97 for (var i = 0; i < arguments.length; i++) {98 for (var j = 0; j < arguments[i].length; j++) {99 var str =arguments[i][j];100 if (!obj[str]) {101 obj[str] = 1;102 } else{103 obj[str]++;104 if (obj[str] ==arguments.length) {105 result.push(str);106 }107 } //end else

108 } //end for j

109 } //end for i

110 returnresult;111 }112 //集合去掉重复

113 Array.prototype.uniquelize = function() {114 var tmp ={},115 ret =[];116 for (var i = 0, j = this.length; i < j; i++) {117 if (!tmp[this[i]]) {118 tmp[this[i]] = 1;119 ret.push(this[i]);120 }121 }122 returnret;123 }124 //并集

125 Array.prototype.union = function() {126 var arr = newArray();127 var obj ={};128 for (var i = 0; i < arguments.length; i++) {129 for (var j = 0; j < arguments[i].length; j++) {130 var str =arguments[i][j];131 if (!obj[str]) {132 obj[str] = 1;133 arr.push(str);134 }135 } //end for j

136 } //end for i

137 returnarr;138 }139 //2个集合的差集 在arr不存在

140 Array.prototype.minus = function(arr) {141 var result = newArray();142 var obj ={};143 for (var i = 0; i < arr.length; i++) {144 obj[arr[i]] = 1;145 }146 for (var j = 0; j < this.length; j++) {147 if (!obj[this[j]]) {148 obj[this[j]] = 1;149 result.push(this[j]);150 }151 }152 returnresult;153 };154 //console.log(Array.intersect(["1", "2", "3"], ["2", "3", "4", "5", "6"])); //[2,3]

155 //console.log([1, 2, 3, 2, 3, 4, 5, 6].uniquelize()); //[1,2,3,4,5,6]

156 //console.log(Array.union(["1", "2", "3"], ["2", "3", "4", "5", "6"], ["5", "6", "7", "8", "9"]))

157 //console.log(["2", "3", "4", "5", "6"].minus(["1", "2", "3"]));

158

159 common.点击控件 = function(view) {160 log(arguments.callee.name + '开始')161 log(view)162 if(view) {163 var x =view.bounds().centerX()164 var y =view.bounds().centerY()165 log('将要点击的坐标 %s,%s', x, y)166 press(x, y, 1)167 } else{168 throw '传入点击控件中的view异常'

169 }170 log(arguments.callee.name + '结束')171 }172 common.铃声 = function(铃声类型, 是否循环播放, 播放时长) {173 var 铃声类型 = 铃声类型 || 0

174 var 播放时长 = 播放时长 || 6000

175 var 是否循环播放 = 是否循环播放 || false

176 if(是否循环播放) {177 播放时长 = 666 * 1000

178 }179 var 铃声选择结果 =android.media.RingtoneManager.TYPE_NOTIFICATION180 switch(铃声类型) {181 case 0:182 铃声选择结果 =android.media.RingtoneManager.TYPE_RINGTONE183 break;184 case 1:185 铃声选择结果 =android.media.RingtoneManager.TYPE_ALARM186 break;187 case 2:188 铃声选择结果 =android.media.RingtoneManager.TYPE_ALL189 break;190 default:191 break;192 }193 var mp = newandroid.media.MediaPlayer();194 mp.setDataSource(context, android.media.RingtoneManager.getDefaultUri(铃声选择结果));195 if (是否循环播放) mp.setLooping(true);196 mp.prepare();197 mp.start();198 threads.start(function() {199 sleep(播放时长)200 if(mp.isPlaying()) {201 mp.stop()202 }203 });204 returnmp;205 }206

207 common.启动app = function(appName) {208 launchApp(appName)209 }210

211 common.停止app = function(appName) {212 var packageName=getPackageName(appName);213 shell('am force-stop ' + packageName,true);214

215 }216 common.卸载app = function(appName) {217 var packageName=getPackageName(appName);218 shell("pm uninstall "+packageName,true)219 }220

221 common.清除app数据 = function(appName) {222 var packageName=getPackageName(appName);223 shell('pm clear ' + packageName,true);224 }225

226

227 common.卸载最新安装的app=function(){228 var pm =context.getPackageManager()229 var appList=pm.getInstalledApplications(0)230 var appInfoList=[]231 for(let i=0;i

241 }242 appInfoList.sort((a,b)=>{243 return b.firstInstallTime-a.firstInstallTime244 })245 log('最新安装的app是=%j',appInfoList[0])246

247 var packageName=appInfoList[0].packageName248 shell("pm uninstall "+packageName,true)249 return appInfoList[0].appName250 }251 common.清除最新安装的app数据=function(){252 var pm =context.getPackageManager()253 var appList=pm.getInstalledApplications(0)254 var appInfoList=[]255 for(let i=0;i

265 }266 appInfoList.sort((a,b)=>{267 return b.firstInstallTime-a.firstInstallTime268 })269 log('最新安装的app是=%j',appInfoList[0])270

271 var packageName=appInfoList[0].packageName272 shell('pm clear ' + packageName,true);273 return appInfoList[0].appName274 }275 common.停止最新安装的app=function(){276 var pm =context.getPackageManager()277 var appList=pm.getInstalledApplications(0)278 var appInfoList=[]279 for(let i=0;i

289 }290 appInfoList.sort((a,b)=>{291 return b.firstInstallTime-a.firstInstallTime292 })293 log('最新安装的app是=%j',appInfoList[0])294

295

296

297

298 var packageName=appInfoList[0].packageName299 shell('am force-stop ' + packageName,true);300 return appInfoList[0].appName301 }302

303 common.启动最新安装的app=function(){304 var pm =context.getPackageManager()305 var appList=pm.getInstalledApplications(0)306 var appInfoList=[]307 for(let i=0;i

317 }318 appInfoList.sort((a,b)=>{319 return b.firstInstallTime-a.firstInstallTime320 })321 log('最新安装的app是=%j',appInfoList[0])322

323

324

325

326 var packageName=appInfoList[0].packageName327 launch(packageName)328 return appInfoList[0].appName329 }330

331 common.点击输入框弹出输入法=function(window,view){332 view.on(333 "touch_down", function() {334 window.requestFocus();335 view.requestFocus();336 }337 )338 view.on(339 "key", function(keyCode,event) {340 if(event.getAction()==event.ACTION_DOWN && keyCode ==keys.back){341 window.disableFocus()342 event.consumed=true

343 }344 window.requestFocus();345 view.requestFocus();346 }347 )348

349 }350

351

352 common.使所有输入框点击时都能弹出输入法=function(window,inputBoxViewArr){353 for(let i=0;i

359

360

361 common.失去焦点=function(window){362 window.disableFocus()363 }364

365

366

367

368

369 common.是否root=function(){370 var r=shell("ls /system/bin",true).result.toString()371 if(r.length>50){372 return true

373 }else{374 return false

375 }376 }377 common.获取指定应用的版本号 = function(appName) {378 /**379 * 获取指定应用的版本号380 * @param {string} packageName 应用包名381 */

382 functiongetPackageVersion(packageName) {383 importPackage(android.content);384 var pckMan =context.getPackageManager();385 var packageInfo = pckMan.getPackageInfo(packageName, 0);386 returnpackageInfo.versionName;387 }388 var packageName =getPackageName(appName);389 returngetPackageVersion(packageName)390 }391

392

393 common.打开qq群名片=function(qq群号){394 app.startActivity({395 action: "android.intent.action.VIEW",396 data:"mqqapi://card/show_pslcard?card_type=group&uin="+qq群号,397 packageName: "com.tencent.mobileqq",398 });//打开qq群名片

399

400

401 }402

403

404

405 common.打开qq名片=function(qq号){406 app.startActivity({407 action: "android.intent.action.VIEW",408 data:"mqqapi://card/show_pslcard?uin="+qq号,409 packageName: "com.tencent.mobileqq",410 });//打开qq名片

411

412

413 }414

415 common.qq强制聊天=function(qq号){416 app.startActivity({417 action: "android.intent.action.VIEW",418 data:"mqq://im/chat?chat_type=wpa&version=1&src_type=web&uin="+qq号,419 packageName: "com.tencent.mobileqq",420 });//qq强制聊天

421

422 }423

424 common.字节变为gbk中文 = function(bytesContent) {425 var str = new java.lang.String(bytesContent, "gbk")426 returnstr427 }428 common.最新安装的app = function() {429

430 var pm =context.getPackageManager()431 var appList=pm.getInstalledApplications(0)432 var appInfoList=[]433 for(let i=0;i{444 return b.firstInstallTime-a.firstInstallTime445 })446 log('最新安装的app是=%j',appInfoList[0])447 return appInfoList[0]448

449

450 }451 common.文件修改时间 = function(path) {452 var time=newjava.io.File(files.path(path)).lastModified();453 returntime454 }455 common.文件大小 = function(path) {456 var size = newjava.io.File(path).length()457 returnsize458 }459 common.字符串变字节 = function(string) {460 return newjava.lang.String(string).getBytes();461 }462 common.日期加N天 = function(n) {463 var now = newDate();464 now.setDate(now.getDate()+n);465 return(now);466 }467 common.md5 = function(string) {468 return java.math.BigInteger(1,java.security.MessageDigest.getInstance("MD5")469 .digest(java.lang.String(string).getBytes())).toString(16);470 }471 common.是横屏还是竖屏 = function() {472 var a =(context.resources.configuration.orientation);473 if (a === 1) {474 toastLog("这是竖屏!!");475 return '竖屏'

476 }477

478 else{479 toastLog("这是横屏!!");}480 return '横屏'

481

482 }483 common.截图 = function(path) {484 var path=path || '/sdcard/1temp.png'

485

486 var dd = shell("screencap -p "+path,true)487 varimg488 if(dd.code ==0){489 img =images.read(path)490 }else{491 log("错误信息:")492 log(dd.error)493 }494 returnimg495

496

497 }498 common.随机字符=function(n){499 var n= n || 8

500 var str="";501 for(var i=0;i

507 common.获取时间=function(time) {508 if(time) {509 return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(newDate(time));510 } else{511 return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(newDate());512 }513 }514

515 common.调整手机音量=function(){516

517 var am =context.getSystemService(context.AUDIO_SERVICE)518 //STREAM_MUSIC这个自己试试,是调整那种音量,范围0-6 自己试试,我也不知道

519 var STREAM_MUSIC = 1

520 //1 增大音量 -1 降低音量 0 不变

521 var ADJUST_RAISE = -1

522 //1 显示调整音量界面 0 不显示界面

523 var FLAG_SHOW_UI = 1

524 am.adjustStreamVolume(STREAM_MUSIC, ADJUST_RAISE, FLAG_SHOW_UI)525

526

527 //获取最大音量

528 var max =am.getStreamMaxVolume(STREAM_MUSIC);529 log(max)530 //获取当前音量

531 toastLog('最大音量'+max)532 sleep(2000)533 var current =am.getStreamVolume(STREAM_MUSIC);534 log(current)535 toastLog('当前音量'+current)536

537 }538

539 common.微信扫一扫=function(){540 context.startActivity(app.intent({541 action: "VIEW",542 className:"com.tencent.mm.ui.LauncherUI",543 packageName:"com.tencent.mm",544 extras: {545 "LauncherUI.From.Scaner.Shortcut": true

546 }547 }).setFlags(335544320));548 }549 common.公共字符串=function(str1,str2){550 //var str1 = "aaabbba"

551 //var str2 = " bbbcaaa"

552

553 functionfind(str1, str2) {554 //创建存放重复内容的数组

555 var all = newArray();556 //字符串转字符数组

557 var str_1 = str1.split("");558 var str_2 = str2.split("");559 for (var i = 0; i < str_1.length; i++) {560 for (var l = 0; l < str_2.length; l++) {561 //判断是否重复

562 var lo =all.length;563 all[lo] = "";564 //判断之后的字符串是否相同

565 for (var k = 0; str_1[i + k] == str_2[l + k]; k++) {566 all[lo] = all[lo] + str_1[i +k];567 //防止数组越界,提前停止循环

568 if (i + k == str_1.length-1||i+k==str_2.length-1) {569 break;570 }571 }572 }573 }574

575 var most = 0;576 var fu = newArray();577 for (var j = 0; j < all.length; j++) {578 //去除空的内容

579 if (all[j] != "") {580 //按照大小排序(删除部分小的)

581 if (all[j].split("").length >=most) {582 most = all[j].split("").length;583 fu[fu.length] =all[j];584 }585 }586 }587

588 //将不重复内容写到新数组

589 var wu=newArray();590 for(var i=0;i

602 //将最长的内容写到新数组

603 var ml=newArray();604 //获得最后一个字符串的长度(最长)

605 var longest=wu[wu.length-1].split("").length;606 //长度等于最长的内容放到新数组

607 for(var i=wu.length-1;i>=0;i--){608 if(wu[i].split("").length==longest){609 ml[ml.length]=wu[i];610 }else{611 //提前结束循环

612 break;613 }614 }615

616 returnml617 }618 var result=find(str1, str2)619 log(result)620 returnresult621 }622

623 common.网络=function(){624 var intent = newIntent();625 importClass(android.content.BroadcastReceiver);626 importClass(android.content.ContextWrapper);627 importClass(android.content.IntentFilter);628 importClass(android.net.ConnectivityManager);629 var filter = newIntentFilter();630 filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);631 new ContextWrapper(context).registerReceiver(a = newBroadcastReceiver({632 onReceive: function(context, intent) {633 var action =intent.getAction();634 if(action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {635 var mConnectivityManager =context.getSystemService(context.CONNECTIVITY_SERVICE);636 netInfo =mConnectivityManager.getActiveNetworkInfo();637 if (netInfo != null &&netInfo.isAvailable()) {638

639 /网络连接

640 var name =netInfo.getTypeName();641

642 if (netInfo.getType() ==ConnectivityManager.TYPE_WIFI) {643 /WiFi网络

644 toastLog("WiFi网络");645 return "WiFi网络"

646 } else if (netInfo.getType() ==ConnectivityManager.TYPE_ETHERNET) {647 /有线网络

648 toastLog("有线网络");649 return "有线网络"

650

651 } else if (netInfo.getType() ==ConnectivityManager.TYPE_MOBILE) {652 /3g网络

653 toastLog("3g网络");654 return "3g网络"

655

656 }657 } else{658 网络断开

659 toastLog("网络断开");660 return "网络断开"

661

662 }663 }664

665 }666 }), filter);667

668 }669

670 common.安卓intent源码=function(){671 var intent = newIntent();672 intent.setAction("android.settings.ACCESSIBILITY_SETTINGS");673 //辅助功能

674 //intent.setAction("android.settings.ADD_ACCOUNT_SETTINGS");

675 //添加账户

676 //intent.setAction("android.settings.AIRPLANE_MODE_SETTINGS");

677 //系统设置首页

678 //intent.setAction("android.settings.APN_SETTINGS");

679 //APN设置

680 //intent.setAction("android.settings.APPLICATION_SETTINGS");

681 //应用管理

682 //intent.setAction("android.settings.BATTERY_SAVER_SETTINGS");

683 //节电助手

684 //intent.setAction("android.settings.BLUETOOTH_SETTINGS");

685 //蓝牙

686 //intent.setAction("android.settings.CAPTIONING_SETTINGS");

687 //字幕

688 //intent.setAction("android.settings.CAST_SETTINGS");

689 //无线显示

690 //intent.setAction("android.settings.DATA_ROAMING_SETTINGS");

691 //移动网络

692 //intent.setAction("android.settings.DATE_SETTINGS");

693 //日期和时间设置

694 //intent.setAction("android.settings.DEVICE_INFO_SETTINGS");

695 //关于手机

696 //intent.setAction("android.settings.DISPLAY_SETTINGS");

697 //显示设置

698 //intent.setAction("android.settings.DREAM_SETTINGS");

699 //互动屏保设置

700 //intent.setAction("android.settings.HARD_KEYBOARD_SETTINGS");

701 //实体键盘

702 //intent.setAction("android.settings.HOME_SETTINGS");

703 //应用权限,默认应用设置,特殊权限

704 //intent.setAction("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS");

705 //忽略电池优化设置

706 //intent.setAction("android.settings.INPUT_METHOD_SETTINGS");

707 //可用虚拟键盘设置

708 //intent.setAction("android.settings.INPUT_METHOD_SUBTYPE_SETTINGS");

709 //安卓键盘语言设置(AOSP)

710 //intent.setAction("android.settings.INTERNAL_STORAGE_SETTINGS");

711 //内存和存储

712 //intent.setAction("android.settings.LOCALE_SETTINGS");

713 //语言偏好设置

714 //intent.setAction("android.settings.LOCATION_SOURCE_SETTINGS");

715 //定位服务设置

716 //intent.setAction("android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS");

717 //所有应用

718 //intent.setAction("android.settings.MANAGE_APPLICATIONS_SETTINGS");

719 //应用管理

720 //intent.setAction("android.settings.MANAGE_DEFAULT_APPS_SETTINGS");

721 //与ACTION_HOME_SETTINGS相同

722 //intent.setAction("android.settings.action.MANAGE_OVERLAY_PERMISSION");

723 //在其他应用上层显示,悬浮窗

724 //intent.setAction("android.settings.MANAGE_UNKNOWN_APP_SOURCES");

725 //安装未知应用 安卓8.0

726 //intent.setAction("android.settings.action.MANAGE_WRITE_SETTINGS");

727 //可修改系统设置 权限

728 //intent.setAction("android.settings.MEMORY_CARD_SETTINGS");

729 //内存与存储

730 //intent.setAction("android.settings.NETWORK_OPERATOR_SETTINGS");

731 //可用网络选择

732 //intent.setAction("android.settings.NFCSHARING_SETTINGS");

733 //NFC设置

734 //intent.setAction("android.settings.NFC_SETTINGS");

735 //网络中的 更多设置

736 //intent.setAction("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");

737 //通知权限设置

738 //intent.setAction("android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS");

739 //勿扰权限设置

740 //intent.setAction("android.settings.ACTION_PRINT_SETTINGS");

741 //打印服务设置

742 //intent.setAction("android.settings.PRIVACY_SETTINGS");

743 //备份和重置

744 //intent.setAction("android.settings.SECURITY_SETTINGS");

745 //安全设置

746 //intent.setAction("android.settings.SHOW_REGULATORY_INFO");

747 //监管信息

748 //intent.setAction("android.settings.SOUND_SETTINGS");

749 //声音设置

750 //intent.setAction("android.settings.SYNC_SETTINGS");

751 //添加账户设置

752 //intent.setAction("android.settings.USAGE_ACCESS_SETTINGS");

753 //有权查看使用情况的应用

754 //intent.setAction("android.settings.USER_DICTIONARY_SETTINGS");

755 //个人词典

756 //intent.setAction("android.settings.VOICE_INPUT_SETTINGS");

757 //辅助应用和语音输入

758 //intent.setAction("android.settings.VPN_SETTINGS");

759 //VPN设置

760 //intent.setAction("android.settings.VR_LISTENER_SETTINGS");

761 //VR助手

762 //intent.setAction("android.settings.WEBVIEW_SETTINGS");

763 //选择webview

764 //intent.setAction("android.settings.WIFI_IP_SETTINGS");

765 //高级WLAN设置

766 //intent.setAction("android.settings.WIFI_SETTINGS");

767 //选择WIFI,连接WIFI

768 app.startActivity(intent);769

770 }771

772 common.获取手机ip地理位置=function(){773 var ip地理位置 = false

774 var ip地理位置正则 = /本机IP: \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}([\s\S]*?)

775 var ipUrl = "http://www.baidu.com/s?ie=UTF-8&wd=ip%E5%BD%92%E5%B1%9E%E5%9C%B0%E6%9F%A5%E8%AF%A2"

776 var r =http.get(ipUrl);777 log("code = " +r.statusCode);778 var htmlResult =r.body.string()779 ip地理位置 =ip地理位置正则.exec(htmlResult)780 if(ip地理位置) {781 ip地理位置 =ip地理位置正则.exec(ip地理位置)782 ip地理位置 = ip地理位置[1]783 toastLog(ip地理位置)784 returnip地理位置785 } else{786 log('没有查询到Ip地理位置,脚本停止')787 return false

788 }789

790 }791

792 common.获取app图标=function(appName){793 importClass(java.io.File);794 importClass(java.io.FileOutputStream);795 importClass(android.graphics.Bitmap);796 var pm =context.getPackageManager();797 importClass(android.util.DisplayMetrics)798 var name =appName799 var packageName =app.getPackageName(name);800 var appInfo = pm.getApplicationInfo(packageName, 0);801 var bmp =appInfo.loadIcon(pm).getBitmap();802 files.create("/sdcard/"+name+".jpg");803 var f = new File("/sdcard/"+name+"qq.jpg");804 var fOut = newFileOutputStream(f);805 bmp.compress(Bitmap.CompressFormat.JPEG, 100, fOut);806 fOut.flush();807 fOut.close();808

809 var img=images.read("sdcard/"+name+".jpg")810 returnimg811 //app.viewFile("sdcard/"+name+".jpg")

812 }813

814 common.替换系统文件 = function(syspath,sdpath) {815 var path = "/data/data/com.aaa.bbb"

816 var pathSD = "/sdcard/com.aaa.bbb"

817 删除原来的文件

818 //shell('chown root:root ' + path, true)

819 //shell('rm ' + path + " -rf", true);

820 //shell('rm ' + pathSD + " -rf", true);

821 //sleep(2000)

822

823 解压备份的文件

824 //var inkeSdacrdPath = "/sdcard/com.aaa.bbb.zip"

825 //var 文件路径 = inkeSdacrdPath

826 //var 文件夹路径 = "/sdcard"

827 //com.stardust.io.Zip.unzip(new java.io.File(文件路径), new java.io.File(文件夹路径))

828 //sleep(2000)

829

830 移动解压后的文件

831 //shell("mv -f /sdcard/com.aaa.bbb /data/data/com.aaa.bbb", true);

832

833 修改权限

834 //shell("chmod -R 777 /data/data/com.aaa.bbb", true);

835

836 //------------------------------------------------

837 //------------------------------------------------

838 //------------------------------------------------

839 //var path = "/data/data/com.aaa.bbb"

840 //var pathSD = "/sdcard/com.aaa.bbb"

841 //删除原来的文件

842 shell('chown root:root ' + syspath, true)843 shell('rm ' + path + " -rf", true);844 sleep(2000)845

846 //移动解压后的文件

847 shell("mv -f "+sdpath+" "+syspath, true);848

849 //修改权限

850 shell("chmod -R 777 "+syspath, true);851

852

853

854 }855

856 common.编辑距离 = function(sm,sn){857 var m=sm.length+1

858 var n=sn.length+1

859 var matrix = newArray();860 for ( var i = 0; i < m; i++) {861 matrix[i] = newArray();862 for ( var j = 0; j < n; j++) {863 matrix[i][j] = 0;864 }865 }866 matrix[0][0]=0

867 for(let i=1;i

869 }870 for(let j=1;j

872 }873 cost = 0

874 for(let i=1;i

878 }879 else{880 cost = 1

881 }882 matrix[i][j]=Math.min(matrix[i-1][j]+1,matrix[i][j-1]+1,matrix[i-1][j-1]+cost)883 }884 }885 return matrix[m-1][n-1]886 //var mindist=minEditDist("126","456")

887 //print(mindist)

888 }889 common.静默安装app = function(apk路径) {890 shell("pm install -r " + apk路径 , true)891 }892

893

894

895 common.获取手机上所有的app名字 = function() {896 var 所有的app名字=[]897 var pm=context.getPackageManager()898 let list=pm.getInstalledApplications(0)899 for(let i=0;i

911 var 交集 =Array.intersect(arr1, arr2)912 log(交集)913 return交集914 }915 common.控制app联网 = function(appName, 是否允许联网联网) {916 var 是否允许联网联网 = 是否允许联网联网 || true

917 //作者: 家 QQ203118908

918

919

920 //本来打算用iptables-restore用文件形式更新防火墙规则,

921 //可是iptables-restore出现了bug,2013年就有人提过这个bug

922 //https://linux.debian.bugs.dist.narkive.com/J0hbJiR6/bug-710379-xtables-addons-common-quota2-module-iptables-save-creates-invalid-record

923 //又得改,坑爹

924

925 //马丹,iptables -D INPUT -lineNumber也有BUG,

926 //提示 index of deletion too big

927 //日了够了

928 //又得改,坑爹

929 //sudo iptables -D OUTPUT 1 -t nat

930 //931 //uid=`cat /data/system/packages.list | grep com.sohu.inputmethod.sogou | busybox awk '{print $2}'`

932 //iptables -t filter -A OUTPUT -m owner --uid-owner=$uid -j DROP

933

934 //以上是android iptables 屏蔽某个app网络访问的内容,

935

936 function联网控制(appName) {937 //-A OUTPUT -m owner --uid-owner 10105 -j ACCEPT

938 //-A OUTPUT -m owner --uid-owner 10105 -j DROP

939 this.等待shell执行完毕的时间 = 0

940 this.防火墙规则路径 = '/sdcard/iptables.txt'

941 this.uid路径 = '/sdcard/' + appName + 'uidOwner.txt'

942 this.appName =appName943 this.packageName = getPackageName(this.appName)944 this.执行shell = (cmd) =>{945 var result = shell(cmd, true);946 console.show();947 log(result);948 if (result.code == 0) {949 toastLog("执行成功");950 } else{951 toastLog("执行失败!请到控制台查看错误信息");952 }953 sleep(this.等待shell执行完毕的时间)954 }955 this.uid = () =>{956 var cmd = 'cat /data/system/packages.list | grep ' + this.packageName + ' > ' + this.uid路径957 log('cmd=', cmd)958 this.执行shell(cmd)959 //cat /data/system/packages.list | grep com.tencent.mobileqq > /sdcard/QQuidOwner.txt

960 var 包含uid的文本 = files.read('/sdcard/' + appName + 'uidOwner.txt')961 log('包含uid的文本=', 包含uid的文本)962 var uidReg = new RegExp(this.packageName + '\\s*(\\d+)')963 log('uidReg=', uidReg)964 var uid = 包含uid的文本.match(uidReg)[1]965 log(uid)966 returnuid967 }968 this.允许联网规则 = 'iptables -t filter -A OUTPUT -m owner --uid-owner ' + this.uid() + ' -j ACCEPT'

969 this.禁止联网规则 = 'iptables -t filter -A OUTPUT -m owner --uid-owner ' + this.uid() + ' -j DROP'

970 this.允许 = () =>{971 this.清空该app的防火墙规则()972 this.将防火墙规则写入系统(this.允许联网规则)973 }974 this.禁止 = () =>{975 this.清空该app的防火墙规则()976 this.将防火墙规则写入系统(this.禁止联网规则)977 }978

979 this.将防火墙规则写入系统 = (防火墙规则) =>{980 var cmd =防火墙规则981 this.执行shell(cmd)982 }983 this.导出防火墙规则 = () =>{984 var cmd = 'iptables-save > ' + this.防火墙规则路径985 this.执行shell(cmd)986 }987 this.防火墙规则 = () =>{988 this.导出防火墙规则()989 var 防火墙规则 = files.read(this.防火墙规则路径)990 log('防火墙规则=', 防火墙规则)991 return防火墙规则992 }993 this.清空该app的防火墙规则 = () =>{994 var 防火墙规则 = this.防火墙规则()995 //stringObject.replace(regexp/substr,replacement)

996 //-A OUTPUT -m owner --uid-owner 10105 -j ACCEPT

997 //-A OUTPUT -m owner --uid-owner 10105 -j ACCEPT

998 //-A OUTPUT -m owner --uid-owner 10105 -j DROP

999 //-A OUTPUT -m owner --uid-owner 10105 -j ACCEPT

1000 //-A OUTPUT -m owner --uid-owner 10105 -j ACCEPT

1001 //删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP):

1002 //[root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP

1003 //iptables -t filter -A OUTPUT -m owner --uid-owner=$uid -j DROP

1004 var 要删除的规则reg = new RegExp('-A (OUT|IN)PUT -m owner --uid-owner ' + this.uid() + ' -j (ACCEPT|DROP)', 'g')1005 //要删除的规则reg= /-A OUTPUT -m owner --uid-owner 10105 -j (ACCEPT|DROP)/

1006 //-A OUTPUT -m owner --uid-owner 10105 -j (ACCEPT|DROP)

1007 //iptables -D OUTPUT -m owner --uid-owner 10105 -j ACCEPT

1008 log('要删除的规则reg=', 要删除的规则reg)1009 var new防火墙规则 = 防火墙规则.match(要删除的规则reg, '')1010 log('new防火墙规则=', new防火墙规则)1011 //new防火墙规则= [

1012 //'-A OUTPUT -m owner --uid-owner 10105 -j ACCEPT',

1013 //'-A OUTPUT -m owner --uid-owner 10105 -j DROP'

1014 //]

1015 if(new防火墙规则) {1016 for (let i = 0; i < new防火墙规则.length; i++) {1017 var 规则 =new防火墙规则[i]1018 规则 = 规则.replace('-A', '-D')1019 var cmd = 'iptables ' +规则1020 this.执行shell(cmd)1021 }1022 }1023 log('清空了指定app的防火墙规则')1024 }1025 }1026 //var appName = 'QQ'

1027 //var appName = '哔哩哔哩'

1028 var appName = '微信'

1029 var app联网控制 = new联网控制(appName)1030 if(是否允许联网联网) {1031 app联网控制.允许()1032 } else{1033 app联网控制.禁止()1034 }1035

1036

1037 }1038 common.提取包含关键字的app = function(app关键字) {1039 importClass(android.content.pm.PackageManager)1040 var uc应用 =[]1041 var ucapp ={}1042 pm =context.getPackageManager();1043 var 有的 =pm.getInstalledPackages(PackageManager.GET_SHARED_LIBRARY_FILES)1044 有的 =pm.getInstalledPackages(PackageManager.GET_META_DATA)1045 有的 = 有的 + ""

1046 有的 = 有的.replace(/PackageInfo[^ ]+ /g, "")1047 有的 = 有的.replace(/[\}|\[|\]| ]/g, "")1048 有的 = 有的.split(",")1049 for(let i of 有的) {1050 var packageInfo = pm.getPackageInfo(i, 0);1051 var appName =packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString()1052 //appName = app.getAppName(i)

1053 if(appName.match(app关键字)) {1054 //log(appName)

1055 //log("包名:" + i)

1056 ucapp ={1057 "包名": i,1058 "名称": appName1059 }1060 uc应用.push(ucapp)1061 }1062 }1063 returnuc应用1064 }1065 common.卸载app没root = function(appName) {1066 var packageName=getPackageName(appName);1067 app.uninstall(packageName);1068

1069

1070 }1071

1072 common.获取页面所有文字 = function(setting) {1073 var setting = setting ||{}1074 var defaultSetting ={1075 getText: true,1076 getDesc: true,1077 getId: false,1078 removeRepetitiveElements: true

1079 }1080 Object.assign(defaultSetting, setting);1081 log(defaultSetting)1082 var allStr =[]1083 var getDescAndTextAndIdOfNode = function(node) {1084 if(node) {1085 if(defaultSetting.getText) {1086 var text =node.text()1087 if (!!text) {1088 allStr.push(text)1089 }1090 }1091 if(defaultSetting.getDesc) {1092 var desc =node.desc()1093 if (!!desc) {1094 allStr.push(desc)1095 }1096 }1097 if(defaultSetting.getId) {1098 var id =node.id()1099 if (!!id) {1100 allStr.push(id)1101 }1102 }1103 }1104 for (let i = 0; i < node.childCount(); i++) {1105 getDescAndTextAndIdOfNode(node.child(i));1106 }1107 }1108 var getFrameLayoutNode = function() {1109 return className('FrameLayout').findOne(2000)1110 }1111 getDescAndTextAndIdOfNode(getFrameLayoutNode())1112

1113 functionremoveRepetitiveElements(arr) {1114 var obj ={}1115 for (let i = 0; i < arr.length; i++) {1116 if (obj.hasOwnProperty(arr[i])) {} else{1117 obj[arr[i]] = true

1118 }1119 }1120 returnObject.keys(obj)1121 }1122 if(defaultSetting.removeRepetitiveElements) {1123 allStr =removeRepetitiveElements(allStr)1124 }1125 returnallStr1126 }1127

1128 common.悬浮控制 = function(window, windowid, ar) {1129 this.Orientation =context.resources.configuration.orientation;1130 this.Width = this.Orientation == 1 ?device.width : device.height;1131 this.Height = this.Orientation == 2 ?device.width : device.height;1132 this.Click = function() {};1133 this.Move = function() {};1134 this.LongClick = function() {};1135 this.setClick = (fun) =>{1136 fun = fun || function() {};1137 this.Click =fun;1138 };1139 this.setMove = (fun) =>{1140 fun = fun || function() {};1141 this.Move =fun;1142 };1143 this.setLongClick = (fun, ji) =>{1144 fun = fun || function() {};1145 this.LongClick =fun;1146 if(parseInt(ji)) {1147 this.Tjitime = parseInt(ji) / 50;1148 };1149 };1150 setInterval(() =>{1151 if (context.resources.configuration.orientation != this.Orientation) {1152 this.Orientation =context.resources.configuration.orientation;1153 this.Width = this.Orientation == 1 ?device.width : device.height;1154 this.Height = this.Orientation == 2 ?device.width : device.height;1155 var xy = this.windowGXY(window.getX(), window.getY(), this.G(window));1156 this.windowyidong([1157 [window.getX(), window.getY()],1158 [xy.x, xy.y]1159 ]);1160 };1161 }, 100);1162 this.TX = 0;1163 this.TY = 0;1164 this.Tx = 0;1165 this.Ty = 0;1166 this.Tyidong = false;1167 this.Tkeep = false;1168 this.Tjitime = 12;1169 this.Ttime = 0;1170 setInterval(() =>{1171 if (this.Tkeep) {1172 this.Ttime++;1173 if (!this.Tyidong && this.Ttime > this.Tjitime) {1174 //非移动且按下时长超过1秒判断为长按

1175 this.Tkeep = false;1176 this.Ttime = 0;1177 this.LongClick();1178 };1179 };1180 }, 50);1181 if(windowid) {1182 windowid.setOnTouchListener(new android.view.View.OnTouchListener((view, event) =>{1183 this.Move(view, event);1184 switch(event.getAction()) {1185 caseevent.ACTION_DOWN:1186 this.Tx =event.getRawX();1187 this.Ty =event.getRawY();1188 this.TX =window.getX();1189 this.TY =window.getY();1190 this.Tkeep = true; //按下,开启计时

1191 break;1192 caseevent.ACTION_MOVE:1193 var sx = event.getRawX() - this.Tx;1194 var sy = event.getRawY() - this.Ty;1195 if (!this.Tyidong && this.Tkeep && this.weiyi(sx, sy) >= 10) {1196 this.Tyidong = true;1197 };1198 if (this.Tyidong && this.Tkeep) {1199 window.setPosition(this.TX + sx, this.TY +sy);1200 };1201 break;1202 caseevent.ACTION_UP:1203 if (!this.Tyidong && this.Tkeep && this.Ttime < 7) {1204 this.Click();1205 };1206 this.Tkeep = false;1207 this.Ttime = 0;1208 if (this.Tyidong) {1209 var A = this.windowGXY(window.getX(), window.getY(), this.G(window));1210 threads.start(new java.lang.Runnable(() =>{1211 this.windowyidong([1212 [window.getX(), window.getY()],1213 [A.x, A.y]1214 ]);1215 }));1216 this.Tyidong = false;1217 };1218 break;1219 };1220 return true;1221 }));1222 };1223 this.G = (win) =>{1224 var K = 35, //悬浮窗的隐形边矩

1225 H = 66; //手机通知栏的高度

1226 if (!ar) {1227 return[1228 [-K, -K],1229 [this.Width - win.getWidth() + K, this.Height - win.getHeight() - H +K]1230 ];1231 } else{1232 return[1233 [0, H],1234 [this.Width - win.getWidth(), this.Height -win.getHeight()]1235 ];1236 };1237 };1238 this.weiyi = function () { //平方和开方

1239 var num = 0;1240 for (var i = 0; i < arguments.length; i++) {1241 num += arguments[i] *arguments[i];1242 };1243 return Math.round(Math.sqrt(num) * 1000) / 1000

1244 };1245 this.windowGXY = function(x, y, k) {1246 x = (k[0][0] < x && x < k[1][0]) ? x : (k[0][0] < x ? k[1][0] : k[0][0]);1247 y = (k[0][1] < y && y < k[1][1]) ? y : (k[0][1] < y ? k[1][1] : k[0][1]);1248 return{1249 x: x,1250 y: y1251 };1252 };1253 this.windowyidong = (A, s, w) =>{1254 w = w ||window;1255 s = s || 10;1256 var sx = A[1][0] - A[0][0],1257 sy = A[1][1] - A[0][1];1258 var sd = this.weiyi(sx, sy) /s;1259 var X = sx /sd,1260 Y = sy /sd;1261 var x = 0,1262 y = 0;1263 for (var i = 0; i < sd; i++) {1264 x +=X;1265 y +=Y;1266 sleep(1);1267 w.setPosition(A[0][0] + x, A[0][1] +y);1268 };1269 w.setPosition(A[1][0], A[1][1]);1270 };1271 this.OutScreen = () =>{1272 var F = this.G(window);1273 var x =window.getX(),1274 y =window.getY();1275 var sx = window.getX() + window.getWidth() / 2,1276 sy = window.getY() + window.getHeight() / 2 + 66;1277 var cx = Math.abs(sx < (this.Width - sx) ? sx : (this.Width - sx)) < Math.abs(sy < (this.Height - sy) ? sy : (this.Height - sy)) ? (sx < this.Width / 2 ? (F[0][0] - window.getWidth()) : (F[1][0] +window.getWidth())) : x,1278 cy = Math.abs(sx < (this.Width - sx) ? sx : (this.Width - sx)) < Math.abs(sy < (this.Height - sy) ? sy : (this.Height - sy)) ? y : (sy < this.Height / 2 ? (F[0][1] - window.getHeight()) : (F[1][1] +window.getHeight()));1279 return[1280 [x, y],1281 [cx, cy]1282 ];1283 };1284 this.toScreenEdge = (d) =>{1285 d = d || 0;1286 var F = this.G(window);1287 var x =window.getX(),1288 y =window.getY();1289 var sw = window.getWidth() *d;1290 var sx = window.getX() + window.getWidth() / 2,1291 sy = window.getY() + window.getHeight() / 2 + 66;1292 var cx = sx < (this.Width - sx) ? -sw : (this.Width + sw -window.getWidth());1293 return[1294 [x, y],1295 [cx, y]1296 ];1297 };1298 this.centerXY = (F) =>{1299 var w =window.getWidth();1300 var h =window.getHeight();1301 return[1302 [F[0] + w / 2, F[1] + h / 2],1303 [F[0] - w / 2, F[1] - h / 2]1304 ];1305 };1306 this.autoIntScreen = () =>{1307 var A = this.windowGXY(window.getX(), window.getY(), this.G(window));1308 threads.start(new java.lang.Runnable(() =>{1309 this.windowyidong([1310 [window.getX(), window.getY()],1311 [A.x, A.y]1312 ]);1313 }));1314 };1315 this.autoIntScreen();1316 };1317

1318

1319 common.闪光弹 = function(content, x, y, color, t) {1320

1321

1322

1323

1324 var single = (function() {1325 varunique;1326

1327 functiongetInstance() {1328 if (unique ===undefined) {1329 unique = newFlash();1330 }1331 returnunique;1332 }1333 return{1334 getInstance: getInstance1335 }1336 })();1337

1338 functionFlash() {}1339 Flash.prototype.update = function(content, x, y, color, t) {1340 this.content = content || '未传入参数'

1341 this.x = x || random(100, 300)1342 this.y = y || random(100, 900)1343 this.color = color || -2278181

1344 this.t = t || 2000

1345 }1346 Flash.prototype.show = function() {1347 var window = floaty.rawWindow(

1348 cardCornerRadius = "18dp" >

1349

1350 size = "30dp"

1351 layout_width = "wrap_content"

1352 layout_height = "wrap_content"

1353 layout_gravity = "center"

1354 gravity = "center"

1355 paddingLeft = "10"

1356 paddingRight = "10"

1357 paddingTop = "10"

1358 paddingBottom = "10" > 123

1359 );1360 window.text.setText(this.content);1361 window.text.setBackgroundColor(this.color);1362 window.setPosition(this.x, this.y);1363 setTimeout(() =>{1364 window.close();1365 }, this.t);1366 }1367

1368 functionflash(content, x, y, color, t) {1369 var content =content.toString()1370 var f =single.getInstance()1371 f.update(content, x, y, color, t)1372 f.show()1373 }1374 var color = color || colors.rgb(random(0, 255), random(0, 255), random(0, 255))1375 flash(content, x, y, color, t);1376 //flash('hello world')

1377 //flash('Are you ok?')

1378 //flash('我很好')

1379 //flash('you are beautiful')

1380

1381

1382

1383

1384 }1385 common.打开开发者选项 = function() {1386 app.startActivity({1387 action: "android.intent.action.VIEW", //此处可为其他值

1388 packageName: "com.android.settings",1389 className: "com.android.settings.Settings$DevelopmentSettingsActivity"

1390 //此处可以加入其他内容,如data、extras

1391 });1392 }1393

1394

1395 common.气泡 = function(msg, x, y) {1396 functiontoastAt0(msg, x, y) {1397 importClass(android.widget.Toast);1398 importClass(android.view.Gravity);1399 var toast =Toast.makeText(context, msg, Toast.LENGTH_SHORT);1400 toast.setGravity(Gravity.TOP |Gravity.LEFT, x, y);1401 toast.show();1402 }1403 var x = x || device.width / 3

1404 var y = y || device.height / 5 * 4

1405 var msg =msg.toString()1406 ui.run(() =>toastAt0(msg, x, y));1407 sleep(2000)1408

1409 //toastAt('sdfsfdsdfs',300,300)

1410

1411

1412

1413

1414 }1415

1416

1417

1418

1419

1420

1421

1422

1423

1424

1425

1426

1427 common.随机字符串 = function(PassLength) {1428 var PassLength = PassLength || 8

1429 var str = 'abcdefghijklmnopqrstuvwxyz';1430 var STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';1431 var num = '0123456789';1432 var sym = '+=-@#~,.[]()!%^*$';1433 var text = str.split('').concat(STR.split(''))1434 var pw = '';1435 for (i = 0; i < PassLength; i++) {1436 var strpos = random(0, text.length - 1);1437 pw += text[strpos].charAt(random(0, text[strpos].length - 1));1438 }1439 returnpw;1440 }1441

1442 common.wifi状态 = function() {1443

1444 importPackage(android.content);1445 let wifiManager =context.getSystemService(Context.WIFI_SERVICE);1446 if(wifiManager.isWifiEnabled()) {1447 log('wifi is opend')1448 return 'open'

1449 } else{1450 log('wifi is closed')1451 return 'close'

1452 }1453

1454

1455 }1456

1457

1458 common.开关飞行模式 = function(开关) {1459 //0 关闭 1开启 默认开启飞行模式

1460 var 开关 = 开关 || 1

1461

1462 function打开飞行模式() {1463 //打开飞行模式

1464 new Shell().exec("su -c 'settings put global airplane_mode_on 1; am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true'")1465 }1466

1467 function关闭飞行模式() {1468 //关闭飞行模式

1469 new Shell().exec("su -c 'settings put global airplane_mode_on 0; am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false'")1470 }1471 if (开关 == 1) {1472 打开飞行模式()1473 } else{1474 关闭飞行模式()1475 }1476

1477 }1478

1479 common.上滑 = function() {1480 var randomP = random(500, 600);1481 var points =[randomP];1482 var interval = 0.1;1483 var x0 = random(780, 900);1484 var y0 = random(1500, 1600);1485 var a = 240;1486 for (var t = 0; t < Math.PI / 2; t +=interval) {1487 var x = x0 - a * (1.8 * Math.cos(t * 0.9) - Math.cos(2 * t * 0.9));1488 var y = y0 - a * (5 * Math.sin(t * 0.9) - Math.sin(2 * t * 0.9));1489 points.push([parseInt(x), parseInt(y)]);1490 }1491 gesture.apply(null, points);1492 sleep(1500);1493 }1494

1495 common.获取deflate网页内容 = function(url) {1496 importClass('java.io.BufferedReader');1497 importClass('java.io.InputStreamReader');1498 importClass("java.util.zip.InflaterInputStream")1499 importClass('java.io.ByteArrayInputStream');1500 importClass("java.util.zip.Inflater")1501

1502 var res =http.get(url)1503 log("statusCode = " +res.statusCode);1504 var deflateFileContent =res.body.bytes()1505 var 网页内容 = null;1506 if(deflateFileContent) {1507 var br = new BufferedReader(new InputStreamReader(new InflaterInputStream(new ByteArrayInputStream(deflateFileContent), new Inflater(true))));1508 var lns =[],1509 cl;1510 while (cl =br.readLine()) lns.push(cl);1511 网页内容 = lns.join("\n")1512 //log('网页内容')

1513 //log(网页内容)

1514 return网页内容1515 } else{1516 console.error('下载失败')1517 exit()1518 }1519 return false

1520 }1521

1522 common.获取gzip网页内容 = function(url) {1523 function保存zip文件(zipFile) {1524 var path = files.join(files.cwd(), "1下载bilibili弹幕专用/webPage.gzip.js")1525 files.createWithDirs(path)1526 log("path=", path)1527 //path= /storage/emulated/0/脚本/zip文件专用/test.zip

1528 files.writeBytes(path, zipFile)1529 var r =解压zip文件(path)1530 log(r)1531 returnr1532 }1533

1534 function解压zip文件(文件路径) {1535 //同一目录下的同一文件名

1536 //unzipGzipFile(sourceGzipFilePath, targetPath)

1537 var fileName =files.getName(文件路径)1538 var 解压后的文件路径 = 文件路径.replace(fileName, 'webPage.js')1539 log('解压的解压后的文件路径=', 解压后的文件路径)1540 files.createWithDirs(解压后的文件路径)1541 //com.stardust.io.Zip.unzip(new java.io.File(文件路径), new java.io.File(解压后的文件路径))

1542 var sourceGzipFilePath =文件路径1543 var targetPath =解压后的文件路径1544 unzipGzipFile(sourceGzipFilePath, targetPath)1545 returntargetPath1546 }1547

1548 functionunzipGzipFile(sourceGzipFilePath, targetPath) {1549 importClass(java.io.FileInputStream);1550 importClass(java.util.zip.GZIPInputStream);1551 importClass('java.io.FileOutputStream');1552

1553 var sourceGzipFilePath = sourceGzipFilePath || '/sdcard/tempSourceGzipFilePath.js'

1554 var targetPath = targetPath || '/sdcard/tempTargetPath.js'

1555 log('sourceGzipFilePath')1556 log(sourceGzipFilePath)1557 log('targetPath')1558 log(targetPath)1559 var sChunk = 8192;1560 var gzipFileInputStream = newFileInputStream(sourceGzipFilePath);1561 var zipin = newGZIPInputStream(gzipFileInputStream);1562 var buffer = util.java.array('byte', sChunk)1563 var out = newFileOutputStream(targetPath);1564 varlength;1565 while ((length = zipin.read(buffer, 0, sChunk)) != -1)1566 out.write(buffer, 0, length);1567 out.close();1568 zipin.close();1569 }1570 var res =http.get(url)1571 log("statusCode = " +res.statusCode);1572 var gzipFileContent =res.body.bytes()1573 var 网页内容 = null;1574 if(gzipFileContent) {1575 var 网页保存路径 =保存zip文件(gzipFileContent)1576 网页内容 =files.read(网页保存路径)1577 //log('网页内容')

1578 //log(网页内容)

1579 return网页内容1580 } else{1581 console.error('下载失败')1582 exit()1583 }1584 return false

1585 }1586

1587

1588 //var r=common

1589 //log(r)

1590 //var arr=[]

1591 //for(var k in common){

1592 //arr.push(k)

1593 //}

1594 //log(arr)

1595

1596

1597 module.exports = common

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值