使用Auto.js Pro获取手机号的探索

有一天,群里有人问怎么用Auto.js Pro获取手机号码。
我百度了一下,随手丢了一个链接给他。由此引发了一伙人的测试与交流。
通过JAVA代码获取手机的一些基本信息(本机号码,SDK版本,系统版本,手机型号)

这篇文章是java的代码。需要翻译成Auto.js Pro的代码。
由于Auto.js支持直接调用Android的API,对于Auto.js没有内置的函数,可以直接通过修改Android代码为JavaScript代码实现。

参考文档

java代码:

package com.zzw.getPhoneInfos;

import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取电话管理对象
        TelephonyManager mTelephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);

        // 获取手机号码
        String phoneNumber = mTelephonyManager.getLine1Number();
        Log.d("获取本机电话号码--->", phoneNumber);
    }
}

下面是群里的小伙伴翻译的Autojs.Pro代码:

// importClass(android.telephony.TelephonyManager);
// importClass(android.content);
log(获取本机号码())

function 获取本机号码() {
  var mTelephonyManager = context.getSystemService(context.TELEPHONY_SERVICE);
  var phoneNumber = mTelephonyManager.getLine1Number();
  return phoneNumber;
};

经过飞云测试和群友反馈,有的手机能获取到手机号,有的获取不到。
就算在手机设置里,手动给Auto.js Pro设置了允许获取手机号的权限,也是同样的结果。

最后讨论不了了之。飞云的结论是,这个方法不太稳定。有的手机能获取到,有的手机获取不到。要想稳定的获取手机号,还得另辟蹊径。

开发环境与工具

开发IDE:Visual Studio Code1.3.5.1
Auto.js:Pro 7.0.3-7
终端设备1:红米NOTE5A高配版
终端设备1分辨率:720X1280像素
终端设备1安卓版本:7.1.2
终端设备2:红米NOTE7
终端设备2分辨率:1080X2340像素
终端设备2安卓版本:9

Auto.js Pro文档

文档地址

相关教程

跟我学Auto.js Pro安卓免ROOT引流脚本开发教程