importClass(android.os.ServiceManager);
importClass(android.os.Parcel);
importClass(java.lang.Class);

function getPassword() {

    var binder = ServiceManager.getService("lock_settings");
    if (binder == null) {
        console.log("无法获取 lock_settings 服务");
        return null;
    }

    var stubClass = Class.forName("com.android.internal.widget.ILockSettings$Stub");
    var field = stubClass.getDeclaredField("TRANSACTION_getPassword");
    field.setAccessible(true);
    var TRANSACTION_getPassword = field.getInt(null);

    var data = Parcel.obtain();
    var reply = Parcel.obtain();

    try {

        data.writeInterfaceToken("com.android.internal.widget.ILockSettings");

        binder.transact(TRANSACTION_getPassword, data, reply, 0);

        reply.readException();
        var password = reply.readString();

        return password;
    } finally {
        data.recycle();
        reply.recycle();
    }
}

// 测试
var pwd = getPassword();
if (pwd == "default_password") {

    "未设置密码或需要锁屏验一次证";
} else {

    pwd;
}
 
 
Back to Top