3-3 uniapp、HTML5+、Native.js 功能代码汇总

本文只适用于 APP

代码汇总

Android平台

监听手机锁屏,解锁,开屏

var receiver;
mui.plusReady(function () {
    // 获取activity
    main = plus.android.runtimeMainActivity();
    // 广播接收
    var ALARM_RECEIVER = "alarm_receiver";
    receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
        // 实现onReceiver回调函数
        onReceive: function (context, intent) {
            var Intent = plus.android.importClass('android.content.Intent');
            console.log(intent.getAction());
            //action = intent.getAction();
            if (intent.getAction() == Intent.ACTION_SCREEN_ON) {
                console.log('开屏')
            } else if (intent.getAction() == Intent.ACTION_SCREEN_OFF) {
                console.log('锁屏')
            } else if (intent.getAction() == Intent.ACTION_USER_PRESENT) {
                console.log('解锁')
            }
            result.textContent += '\nAction :' + intent.getAction();
            main.unregisterReceiver(receiver);
        }
    });
    var IntentFilter = plus.android.importClass('android.content.IntentFilter');
    var Intent = plus.android.importClass('android.content.Intent');
    var filter = new IntentFilter();
    filter.addAction(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    filter.addAction(Intent.ACTION_USER_PRESENT);
    // 注册监听
    main.registerReceiver(receiver, filter);
})

直接拨打电话

// 弹出询问框
uni.makePhoneCall({
    phoneNumber: '10086',
    success: (res) => {
        console.log('调用成功!')
    },
    fail: (res) => {
        console.log('调用失败!')
    }
})
// false 直接打了,true 弹出询问框
plus.device.dial("10086", false);
// 不弹出询问框直接拨打电话
// 导入Activity、Intent类
var Intent = plus.android.importClass("android.content.Intent");
var Uri = plus.android.importClass("android.net.Uri");
// 获取主Activity对象的实例
var main = plus.android.runtimeMainActivity();
// 创建Intent
// 这里可修改电话号码
var uri = Uri.parse("tel:10086");
var call = new Intent("android.intent.action.CALL", uri);
// 调用startActivity方法拨打电话
main.startActivity(call);
// ...

将程序切换到后台

var main = plus.android.runtimeMainActivity();
main.moveTaskToBack(false);

强制弹出软键盘

var nativeWebview, imm, InputMethodManager;
var initNativeObjects = function () {
    if (mui.os.android) {
        var main = plus.android.runtimeMainActivity();
        var Context = plus.android.importClass("android.content.Context");
        InputMethodManager = plus.android.importClass("android.view.inputmethod.InputMethodManager");
        imm = main.getSystemService(Context.INPUT_METHOD_SERVICE);
    } else {
        nativeWebview = plus.webview.currentWebview().nativeInstanceObject();
    }
};
var showSoftInput = function () {
    if (mui.os.android) {
        imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
    } else {
        nativeWebview.plusCallMethod({
            "setKeyboardDisplayRequiresUserAction": false
        });
    }
    setTimeout(function () {
        var inputElem = document.querySelector('input');
        inputElem.focus();
        inputElem.parentNode.classList.add('mui-active'); //第一个是search,加上激活样式
    }, 200);
};
mui.plusReady(function () {
    setTimeout(function () {
        initNativeObjects();
        showSoftInput();
    }, 50)
});

获取安卓设备 device.uuid

plus.device.uuid;
var mainActivity = plus.android.runtimeMainActivity();
var Settings = plus.android.importClass("android.provider.Settings");
console.log(Settings.Secure.getString(mainActivity.getContentResolver(), Settings.Secure.ANDROID_ID));

得到手机MAC地址

var mac = "xxx-xxx-xxx-xxx";
if (plus.os.name == "Android") {
    // WifiManager
    var Context = plus.android.importClass("android.content.Context");
    var WifiManager = plus.android.importClass("android.net.wifi.WifiManager");
    var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
    var WifiInfo = plus.android.importClass("android.net.wifi.WifiInfo");
    var wifiInfo = wifiManager.getConnectionInfo();
    mac = wifiInfo.getMacAddress();
}
return mac;
var net = plus.android.importClass("java.net.NetworkInterface")
var wl0 = net.getByName('wlan0')
var macByte = wl0.getHardwareAddress()
var str = ''
// 下面这段代码来自网络
for (var i = 0; i < macByte.length; i++) {
    var tmp = "";
    var num = macByte[i];
    if (num < 0) {
        tmp = (255 + num + 1).toString(16);
    } else {
        tmp = num.toString(16);
    }
    if (tmp.length == 1) {
        tmp = "0" + tmp;
    }
    str += tmp;
}
console.log('mac', str)

获取手机内存信息

var memoryInfo = '';
if (plus.os.name == "Android") {
    var Context = plus.android.importClass("android.content.Context");
    var MemoryInfo = plus.android.importClass("android.app.ActivityManager.MemoryInfo");
    var memortInfo = plus.android.importClass("android.app.ActivityManager");
    var activityService = plus.android.runtimeMainActivity().getSystemService(Context.ACTIVITY_SERVICE);
    activityService.getMemoryInfo(MemoryInfo);
    memoryInfo = memortInfo.availMem;
}
return memoryInfo;

获取手机内部总的存储空间

var internalMemSize = 0;
if (plus.os.name == "Android") {
    var environment = plus.android.importClass("android.os.Environment");
    var statFs = plus.android.importClass("android.os.StatFs");
    var files = plus.android.importClass("java.io.File");
    var Files = environment.getDataDirectory();
    var StatFs = new statFs(Files.getPath());
    var blockSize = parseFloat(StatFs.getBlockSize());
    var blockCount = parseFloat(StatFs.getBlockCount());
    internalMemSize = blockSize * blockCount;
}
return internalMemSize;

获取总内存

var memInfo = '/proc/meminfo';
var temp = '',
    ramSize = '',
    arrays, initMemory;
var fileReader = plus.android.importClass("java.io.FileReader");
var bufferedReader = plus.android.importClass("java.io.BufferedReader");
var FileReader = new fileReader(memInfo);
var BufferedReader = new bufferedReader(FileReader, 8192);
while ((temp = BufferedReader.readLine()) != null) {
    if (-1 != temp.indexOf('MemTotal:')) {
        var value = temp.replace(/[^0-9]/ig, "");
        ramSize = Math.floor(parseInt(value) / (1024));
    }
}
return ramSize;

获取手机CPU信息

var cpuInfo = '/proc/cpuinfo';
var temp = '',
    cpuHardware;
var fileReader = plus.android.importClass("java.io.FileReader");
var bufferedReader = plus.android.importClass("java.io.BufferedReader");
var FileReader = new fileReader(cpuInfo);
var BufferedReader = new bufferedReader(FileReader, 8192);
while ((temp = BufferedReader.readLine()) != null) {
    if (-1 != temp.indexOf('Hardware')) {
        cpuHardware = temp.substr(parseInt(temp.indexOf(":")) + 1);
    }
}
return cpuHardware;

获取CPU核数

var Runtime = plus.android.importClass("java.lang.Runtime");
var cpuCount = Runtime.getRuntime().availableProcessors();
return cpuCount;

启关闭蓝牙

main = plus.android.runtimeMainActivity();
BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
BAdapter = BluetoothAdapter.getDefaultAdapter();
if (!BAdapter.isEnabled()) {
    BAdapter.enable();
}

监听蓝牙开关状态

plus.bluetooth.getBluetoothAdapterState({
    success: function (e) {
        console.log('state success: ' + JSON.stringify(e));
    },
    fail: function (e) {
        console.log('state failed: ' + JSON.stringify(e));
    }
});
plus.bluetooth.onBluetoothAdapterStateChange(function (e) {
    console.log('state changed: ' + JSON.stringify(e));
});
var main = plus.android.runtimeMainActivity();
var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
var BAdapter = new BluetoothAdapter.getDefaultAdapter();
var resultDiv = document.getElementById('output');
var receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
    // 实现onReceiver回调函数
    onReceive: function (context, intent) {
        plus.android.importClass(intent);
        console.log(intent.getAction());
        resultDiv.textContent += '\nAction :' + intent.getAction();
        main.unregisterReceiver(receiver);
    }
});
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
var filter = new IntentFilter();
// 监听蓝牙开关
filter.addAction(BAdapter.ACTION_STATE_CHANGED);
// 注册监听
main.registerReceiver(receiver, filter);
if (!BAdapter.isEnabled()) {
    // 启动蓝牙
    BAdapter.enable();
} else {
    BAdapter.disable();
}

获取蓝牙设备列表

plus.bluetooth.getBluetoothDevices({
    success: function (e) {
        var devices = e.devices;
        console.log('get devices success: ' + e.length);
        for (var i in devices) {
            console.log(i + ': ' + JSON.stringify(devices[i]));
        }
    },
    fail: function (e) {
        console.log('get devices failed: ' + JSON.stringify(e));
    }
});
var main = plus.android.runtimeMainActivity();
var Context = plus.android.importClass("android.content.Context");
BManager = main.getSystemService(Context.BLUETOOTH_SERVICE);
// 引入相关的method函数
plus.android.importClass(BManager);
BAdapter = BManager.getAdapter();
// 引入相关的method函数,这样之后才会有isEna
plus.android.importClass(BAdapter);
var lists = BAdapter.getBondedDevices();
plus.android.importClass(lists);
var iterator = lists.iterator();
plus.android.importClass(iterator);
while (iterator.hasNext()) {
    var d = iterator.next();
    plus.android.importClass(d);
    console.log("名称:" + d.getName() + ",地址:" + d.getAddress());
}

蓝牙连接票据打印机完整代码

//address=""搜索蓝牙//address=设备mac地址,自动配对给出mac地址的设备
function searchDevices(address) {
    //注册类
    var main = plus.android.runtimeMainActivity();
    var IntentFilter = plus.android.importClass('android.content.IntentFilter');
    var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
    var BluetoothDevice = plus.android.importClass("android.bluetooth.BluetoothDevice");
    var BAdapter = BluetoothAdapter.getDefaultAdapter();
    console.log("开始搜索设备");
    var filter = new IntentFilter();
    var bdevice = new BluetoothDevice();
    var on = null;
    var un = null;
    var vlist1 = document.getElementById('list1'); //注册容器用来显示未配对设备
    vlist1.innerHTML = ''; //清空容器
    var vlist2 = document.getElementById('list2'); //注册容器用来显示未配对设备
    vlist2.innerHTML = ''; //清空容器
    var button1 = document.getElementById('bt1');
    button1.disabled = true;
    button1.value = '正在搜索请稍候';
    BAdapter.startDiscovery(); //开启搜索
    var receiver;
    receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
        onReceive: function (context, intent) { //实现onReceiver回调函数
            plus.android.importClass(intent); //通过intent实例引入intent类,方便以后的‘.’操作
            console.log(intent.getAction()); //获取action
            if (intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED") {
                main.unregisterReceiver(receiver); //取消监听
                button1.disabled = false;
                button1.value = '搜索设备';
                console.log("搜索结束")
            } else {
                BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                //判断是否配对
                if (BleDevice.getBondState() == bdevice.BOND_NONE) {
                    console.log("未配对蓝牙设备:" + BleDevice.getName() + '    ' + BleDevice.getAddress());
                    //参数如果跟取得的mac地址一样就配对
                    if (address == BleDevice.getAddress()) {
                        if (BleDevice.createBond()) { //配对命令.createBond()
                            console.log("配对成功");
                            var li2 = document.createElement('li'); //注册
                            li2.setAttribute('id', BleDevice.getAddress()); //打印机mac地址
                            li2.setAttribute('onclick', 'print(id)'); //注册click点击列表进行打印
                            li2.innerText = BleDevice.getName();
                            vlist2.appendChild(li2);
                        }
                    } else {
                        if (BleDevice.getName() != on) { //判断防止重复添加
                            var li1 = document.createElement('li'); //注册
                            li1.setAttribute('id', BleDevice.getAddress()); //打印机mac地址
                            li1.setAttribute('onclick', 'searchDevices(id)'); //注册click点击列表进行配对
                            on = BleDevice.getName();
                            li1.innerText = on;
                            vlist1.appendChild(li1);
                        }
                    }
                } else {
                    if (BleDevice.getName() != un) { //判断防止重复添加
                        console.log("已配对蓝牙设备:" + BleDevice.getName() + '    ' + BleDevice.getAddress());
                        var li2 = document.createElement('li'); //注册
                        li2.setAttribute('id', BleDevice.getAddress()); //打印机mac地址
                        li2.setAttribute('onclick', 'print(id)'); //注册click点击列表进行打印
                        un = BleDevice.getName();
                        li2.innerText = un;
                        vlist2.appendChild(li2);
                    }
                }
            }

        }
    });
    filter.addAction(bdevice.ACTION_FOUND);
    filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED);
    filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED);
    filter.addAction(BAdapter.ACTION_STATE_CHANGED);
    main.registerReceiver(receiver, filter); //注册监听
}
var device = null,
    BAdapter = null,
    BluetoothAdapter = null,
    uuid = null,
    main = null,
    bluetoothSocket = null;
function print(mac_address) {
    if (!mac_address) {
        mui.toast('请选择蓝牙打印机');
        return;
    }
    main = plus.android.runtimeMainActivity();
    BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
    UUID = plus.android.importClass("java.util.UUID");
    uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    BAdapter = BluetoothAdapter.getDefaultAdapter();
    device = BAdapter.getRemoteDevice(mac_address);
    plus.android.importClass(device);
    bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
    plus.android.importClass(bluetoothSocket);
    if (!bluetoothSocket.isConnected()) {
        console.log('检测到设备未连接,尝试连接....');
        bluetoothSocket.connect();
    }
    console.log('设备已连接');
    if (bluetoothSocket.isConnected()) {
        var outputStream = bluetoothSocket.getOutputStream();
        plus.android.importClass(outputStream);
        var string = "打印测试\r\n";
        var bytes = plus.android.invoke(string, 'getBytes', 'gbk');
        outputStream.write(bytes);
        outputStream.flush();
        device = null //这里关键
        bluetoothSocket.close(); //必须关闭蓝牙连接否则意外断开的话打印错误
    }
}

NFC 数据读取

function test_nfc() {
    var main = plus.android.runtimeMainActivity();
    var Intent = plus.android.importClass('android.content.Intent');
    var Activity = plus.android.importClass('android.app.Activity');
    var PendingIntent = plus.android.importClass('android.app.PendingIntent');
    var IntentFilter = plus.android.importClass('android.content.IntentFilter');
    var NfcAdapter = plus.android.importClass('android.nfc.NfcAdapter');
    var nfcAdapter = NfcAdapter.getDefaultAdapter(main);
    var intent = new Intent(main, main.getClass());
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    var pendingIntent = PendingIntent.getActivity(main, 0, intent, 0);
    var ndef = new IntentFilter("android.nfc.action.TECH_DISCOVERED");
    ndef.addDataType("*/*");
    var intentFiltersArray = [ndef];
    var techListsArray = [
        ["android.nfc.tech.IsoDep"],
        ["android.nfc.tech.NfcA"],
        ["android.nfc.tech.NfcB"],
        ["android.nfc.tech.NfcF"],
        ["android.nfc.tech.Nfcf"],
        ["android.nfc.tech.NfcV"],
        ["android.nfc.tech.NdefFormatable"],
        ["android.nfc.tech.MifareClassi"],
        ["android.nfc.tech.MifareUltralight"]
    ];
    document.addEventListener("newintent",
        function () {
            console.log('newintent');
            setTimeout(handle_nfc_data, 1000);
        }, false);

    document.addEventListener("pause", function (e) {
        if (nfcAdapter) {
            nfcAdapter.disableForegroundDispatch(main);
            console.log('pause');
        }
    }, false);

    document.addEventListener("resume", function (e) {
        if (nfcAdapter) {
            console.log('resume');
            nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);
        }
    }, false);
    nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);
}

function handle_nfc_data() {
    var main = plus.android.runtimeMainActivity();
    var runtimeIntent = main.getIntent();
    var b = runtimeIntent.getExtras();
    plus.android.importClass(b);
    var set = b.keySet();
    plus.android.importClass(set);
    var sb;
    var i = set.iterator();
    plus.android.importClass(i);
    var hasNest = i.hasNext();
    var NfcA = plus.android.importClass("android.nfc.tech.NfcA");
    var IsoDep = plus.android.importClass("android.nfc.tech.IsoDep");
    var Tag = plus.android.importClass("android.nfc.Tag");
    while (hasNest) {
        var key = i.next();
        var v = b.get(key);
        if (v instanceof NfcA) {
            var atqa = v.getAtqa();
            var sak = v.getSak();
            var tag = g.getTag();
            plus.android.importClass(tag);
            var techList = tag.getTechList();
            console.log('NfcA Atqa=' + atqa + ";Sak=" + sak + ";techList=" + techList);
        } else if (v instanceof IsoDep) {
            var tag = g.getTag();
            plus.android.importClass(tag);
            var techList = tag.getTechList();
            console.log('IsoDep techList=' + techList);
        } else if (v instanceof Tag) {
            var tag = v;
            var techList = tag.getTechList();
            console.log('Tag techList=' + techList);
        }
        console.log(key + ';v=' + v);
        sb = key + "=" + v + "\n";
        hasNest = i.hasNext();
        console.log('hasNest=' + hasNest);
    }
}

截屏

var ws = plus.webview.currentWebview();
var bitmap = new plus.nativeObj.Bitmap('test');
// 将webview内容绘制到Bitmap对象中
ws.draw(bitmap, function () {
    console.log('截屏绘制图片成功');
}, function (e) {
    console.log('截屏绘制图片失败:' + JSON.stringify(e));
});

获取设备当前网速

var TrafficStats; //TrafficStats类实例对象
var total_data; //总共接收到的流量
var traffic_data; //一定时间内接收到的流量
var intervalId; //定时器的返回值,用于控制计时器的停止
document.addEventListener('plusready', function () {
    //console.log("所有plus api都应该在此事件发生后调用,否则会出现plus is undefined。"
    TrafficStats = plus.android.importClass("android.net.TrafficStats");
    total_data = TrafficStats.getTotalRxBytes();
    intervalId = window.setInterval("getNetSpeed()", 1000);
});

/**
 * 核心方法
 */
function getNetSpeed() {
    traffic_data = TrafficStats.getTotalRxBytes() - total_data;
    total_data = TrafficStats.getTotalRxBytes();
    document.getElementById("net").value = bytesToSize(traffic_data);
    console.log(bytesToSize(traffic_data));
}

//将byte自动转换为其他单位
function bytesToSize(bytes) {
    if (bytes === 0) return '0 B/s';
    var k = 1000, // or 1024
        sizes = ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s', 'PB/s', 'EB/s', 'ZB/s', 'YB/s'],
        i = Math.floor(Math.log(bytes) / Math.log(k));
    return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];
}

打开网络设置

var ComponentName = plus.android.importClass("android.content.ComponentName");
var main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass("android.content.Intent");
var mIntent = new Intent();
var comp = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.VIEW");
main.startActivity(mIntent);

打开各种系统设置界面

var main = plus.android.runtimeMainActivity(); //获取activity
var Intent = plus.android.importClass('android.content.Intent');
var Settings = plus.android.importClass('android.provider.Settings');
var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); //可设置表中所有Action字段
main.startActivity(intent);

获取WIFI列表

function loadWifiInfo() {
    var Context = plus.android.importClass("android.content.Context");
    var WifiManager = plus.android.importClass("android.net.wifi.WifiManager")
    var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
    var List = plus.android.importClass("java.util.List");
    var ArrayList = plus.android.importClass("java.util.ArrayList");
    var ScanResult = plus.android.importClass("android.net.wifi.ScanResult");
    var wifis = new ArrayList();
    wifis = wifiManager.getScanResults();
    return wifis;
}

调用系统控件播放视频

plus.runtime.openFile()
var Intent = plus.android.importClass("android.content.Intent");
var Uri = plus.android.importClass("android.net.Uri");
var main = plus.android.runtimeMainActivity();
var intent = new Intent(Intent.ACTION_VIEW);
var uri = Uri.parse("网络视频地址");
intent.setDataAndType(uri, "video/*");
main.startActivity(intent);

调用 os 通讯录选择控件

var REQUESTCODE = 1000;
main = plus.android.runtimeMainActivity();
var Intent = plus.android.importClass('android.content.Intent');
var ContactsContract = plus.android.importClass('android.provider.ContactsContract');
var intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
main.onActivityResult = function (requestCode, resultCode, data) {
    if (REQUESTCODE == requestCode) {
        var phoneNumber = null;
        var resultString = "";
        var context = main;
        plus.android.importClass(data);
        var contactData = data.getData();
        var resolver = context.getContentResolver();
        plus.android.importClass(resolver);
        var cursor = resolver.query(contactData, null, null, null, null);
        plus.android.importClass(cursor);
        cursor.moveToFirst();
        var s_ret;
        var givenName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        s_ret = givenName;
        var contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
        var pCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,
            null, null);
        while (pCursor.moveToNext()) {
            phoneNumber = pCursor.getString(pCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            s_ret += '\n' + phoneNumber;
        }
        alert(s_ret);
        cursor.close();
        pCursor.close();
    }
};
main.startActivityForResult(intent, REQUESTCODE);

原生日历提醒插入

var calanderURL = "content://com.android.calendar/calendars";
var calanderEventURL = "content://com.android.calendar/events";
var calanderRemiderURL = "content://com.android.calendar/reminders";
var calId;

function addEvent() {
    var Cursor = plus.android.importClass("android.database.Cursor");
    var Uri = plus.android.importClass("android.net.Uri");
    var Calendar = plus.android.importClass("java.util.Calendar");
    var main = plus.android.runtimeMainActivity();
    var userCursor = plus.android.invoke(main.getContentResolver(), "query", Uri.parse(calanderURL), null, null, null, null);
    if (plus.android.invoke(userCursor, "getCount") <= 0) {
        console.log("添加账号" + plus.android.invoke(userCursor, "getCount"));
        initCalendars();
    } else {
        console.log("开始插入:" + plus.android.invoke(userCursor, "getCount"));
        plus.android.invoke(userCursor, "moveToLast");
        calId = plus.android.invoke(userCursor, "getString", plus.android.invoke(userCursor, "getColumnIndex", "_id"));
        var ContentValues = plus.android.importClass("android.content.ContentValues");
        var events = new ContentValues();
        events.put("title", "测试中==》呵呵");
        events.put("description", "Frankie受空姐邀请,今天晚上10点以后将在Sheraton交流.lol~");
        // 插入账户
        events.put("calendar_id", calId);
        console.log(calId);
        events.put("eventLocation", "地球-华夏");
        var mCalendar = Calendar.getInstance();
        plus.android.invoke(mCalendar, "set", Calendar.HOUR_OF_DAY, 11);
        plus.android.invoke(mCalendar, "set", Calendar.MINUTE, 0);
        var start = plus.android.invoke(plus.android.invoke(mCalendar, "getTime"), "getTime");
        var end = plus.android.invoke(plus.android.invoke(mCalendar, "getTime"), "getTime");
        events.put("dtstart", start);
        events.put("dtend", end);
        events.put("hasAlarm", 1);
        events.put("eventTimezone", "Asia/Shanghai"); // 这个是时区,必须有,
        // 添加事件
        var newEvent = plus.android.invoke(plus.android.runtimeMainActivity().getContentResolver(), "insert", Uri.parse(calanderEventURL), events);
        // 事件提醒的设定
        var id = plus.android.invoke(newEvent, "getLastPathSegment");
        var values = new ContentValues();
        values.put("event_id", id);
        // 提前10分钟有提醒
        values.put("minutes", "10");
        values.put("method", "1");
        plus.android.invoke(main.getContentResolver(), "insert", Uri.parse(calanderRemiderURL), values);
        mui.toast("插入事件成功,可打开本地日历查看");
    }
}
//添加账户

function initCalendars() {
    var TimeZone = plus.android.importClass("java.util.TimeZone");
    var timeZone = TimeZone.getDefault();
    var ContentValues = plus.android.importClass("android.content.ContentValues");
    var value = new ContentValues();
    var Calendars = plus.android.importClass("android.provider.CalendarContract.Calendars");
    value.put("name", "yy");
    value.put("account_name", "hehe@gmail.com");
    value.put("account_type", "com.android.exchange");
    value.put("calendar_displayName", "mytt");
    value.put("visible", 1);
    value.put("calendar_color", -9206951);
    value.put("calendar_access_level", "700");
    value.put("sync_events", 1);
    value.put("calendar_timezone", plus.android.invoke(timeZone, "getID"));
    value.put("ownerAccount", "hehe@gmail.com");
    value.put("canOrganizerRespond", 0);
    var Uri = plus.android.importClass("android.net.Uri");
    var calendarUri = Uri.parse("content://com.android.calendar/calendars");
    var buildUpon = plus.android.invoke(calendarUri, "buildUpon");
    var CalendarContract = plus.android.importClass("android.provider.CalendarContract");
    plus.android.invoke(buildUpon, "appendQueryParameter", CalendarContract.CALLER_IS_SYNCADAPTER, "true");
    plus.android.invoke(buildUpon, "appendQueryParameter", "account_name", "hehe@gmail.com");
    plus.android.invoke(buildUpon, "appendQueryParameter", "account_type", "com.android.exchange");
    calendarUri = plus.android.invoke(buildUpon, "build");
    plus.android.invoke(plus.android.runtimeMainActivity().getContentResolver(), "insert", calendarUri, value);
    mui.toast("添加账号成功");
}