【autojs】Auto.js Pro QR코드 식별 스크립트 소스 코드
42876 단어 스크립트 소스
코드
"ui";
ui.layout(
<vertical>
<text id="text_te" paddingTop="10" textSize="19sp" text=" "/>
<text id="text_test" paddingTop="10" textSize="19sp"/>
<horizontal padding="90 20 10 10">
<button id="calc" align="center"> </button>
<button id="up" align="center"> </button>
</horizontal>
<text id="text_url" paddingTop="10" textSize="19sp"/>
</vertical>
);
var ResultIntent = {
intentCallback: {},
init: function() {
activity.getEventEmitter().on("activity_result", (requestCode, resultCode, data) => {
this.onActivityResult(requestCode, resultCode, data);
});
},
startActivityForResult: function(intent, callback) {
var i;
for (i = 0; i < 65536; i++) {
if (!(i in this.intentCallback)) break;
}
if (i >= 65536) {
toast(" Intent : Intent ");
return;
}
this.intentCallback[i] = callback;
activity.startActivityForResult(intent, i);
},
onActivityResult: function(requestCode, resultCode, data) {
var cb = this.intentCallback[requestCode];
if (!cb) return;
delete this.intentCallback[requestCode];
cb(resultCode, data);
}
};
ResultIntent.init();
function URIUtils_uriToFile(uri) { //Source : https://www.cnblogs.com/panhouye/archive/2017/04/23/6751710.html
var r = null,
cursor, column_index, selection = null,
selectionArgs = null,
isKitKat = android.os.Build.VERSION.SDK_INT >= 19,
docs;
if (uri.getScheme().equalsIgnoreCase("content")) {
if (isKitKat && android.provider.DocumentsContract.isDocumentUri(activity, uri)) {
if (String(uri.getAuthority()) == "com.android.externalstorage.documents") {
docs = String(android.provider.DocumentsContract.getDocumentId(uri)).split(":");
if (docs[0] == "primary") {
return android.os.Environment.getExternalStorageDirectory() + "/" + docs[1];
}
} else if (String(uri.getAuthority()) == "com.android.providers.downloads.documents") {
uri = android.content.ContentUris.withAppendedId(
android.net.Uri.parse("content://downloads/public_downloads"),
parseInt(android.provider.DocumentsContract.getDocumentId(uri))
);
} else if (String(uri.getAuthority()) == "com.android.providers.media.documents") {
docs = String(android.provider.DocumentsContract.getDocumentId(uri)).split(":");
if (docs[0] == "image") {
uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if (docs[0] == "video") {
uri = android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if (docs[0] == "audio") {
uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
}
selection = "_id=?";
selectionArgs = [docs[1]];
}
}
try {
cursor = activity.getContentResolver().query(uri, ["_data"], selection, selectionArgs, null);
if (cursor && cursor.moveToFirst()) {
r = String(cursor.getString(cursor.getColumnIndexOrThrow("_data")));
}
} catch (e) {
log(e)
}
if (cursor) cursor.close();
return r;
} else if (uri.getScheme().equalsIgnoreCase("file")) {
return String(uri.getPath());
}
return null;
}
function startChooseFile(mimeType, callback) {
var i = new android.content.Intent(android.content.Intent.ACTION_GET_CONTENT);
i.setType(mimeType);
ResultIntent.startActivityForResult(i, function(resultCode, data) {
if (resultCode != activity.RESULT_OK) return;
var f = URIUtils_uriToFile(data.getData());
ui.run(() => {
ui.text_test.setText(f);
});
});
}
ui.calc.click(() => {
startChooseFile("*/*");
});
ui.up.click(() => {
threads.start(function() {
let ert = ui.text_test.text();
if(ert){
let wsx = Dist(ui.text_test.text());
if(wsx){
ui.run(() => {
ui.text_url.setText(wsx);
});}}else{toast(" ");}
});
});
ui.text_url.click(() =>{
let xbj = ui.text_url.text();
if (xbj) {
setClip(xbj);
toast(" ");
}
});
function Dist(imgPath){
deypath="/sdcard/Android/dey.dex";
if(files.isFile(deypath)){
try{
runtime.loadDex(deypath);
importPackage(com.google.zxing);
importPackage(com.google.zxing.common);
importPackage(com.google.zxing.client.j2se);
var pixels = images.readPixels(imgPath);
var w = pixels.width;
var h = pixels.height;
var binaryBitmap = new BinaryBitmap(new HybridBinarizer(
new RGBLuminanceSource(w, h, pixels.data)));
var qrCodeResult = new MultiFormatReader().decode(binaryBitmap);
let edc=qrCodeResult.getText();
toastLog(edc);
return edc;}catch (e){log(e);toast(" !!");return false;}
}else{confirm(" "," , ?", (value) => {if(value){down();}else{toast(" ")}})}
}
function down(){
threads.start(function(){
let url = "http://bmob-cdn-21628.b0.upaiyun.com/2018/11/18/20cefe4640fa37fa8032197d0d502a7b.dex";
let res = http.get(url);
if(res.statusCode != 200){
toast(" ");
}
files.writeBytes("/sdcard/Android/dey.dex", res.body.bytes());
toast(" ");});
}
설명
본고에서 제공한 코드는 참고만 제공한다.아마도 최신 버전의 Auto에서js 위에서 수정을 해야만 실행할 수 있습니다.
Auto.js 소개
Auto.js는 안드로이드 시스템의'보조 기능'을 이용하여 버튼 요정과 유사하게 코드를 통해 일련의 인터페이스 동작을 모의할 수 있는 보조 작업이다.'버튼 요정'과 달리 그의 시뮬레이션 동작은 인터페이스에서 좌표점을 정하는 데 간단하게 사용되는 것이 아니라 win과 같이 창 손잡이를 찾아 실현하는 것이다.
Auto.js는 자바스크립트를 스크립트 언어로 사용하고 현재 Rhino 1.7.2.2를 스크립트 엔진으로 사용하며 ES5와 일부 ES6 기능을 지원합니다.
개발 문서
Auto.jsPro 개발 문서 최적화 버전 문서가 아직 보완 중이기 때문에 문서 설명과 코드의 실제 행위가 일치하지 않을 수 있습니다.템플릿, 스타일, generator는 Node에서 온 것입니다.js.
Auto를 사용하는 이유js Pro 개발 스크립트의 특징은 무엇입니까?
Auto를 사용하도록 유도하십시오.js Pro의 이유는 다양합니다.가장 중요한 몇 가지 이유는 다음과 같다.
관련 자습서
Auto.js Pro 안드로이드 해상도 ROOT 유입 방지 스크립트 개발 자습서