DCloud_App_Array
DCloud_App_Array
  • 发布:2014-12-11 16:17
  • 更新:2024-04-26 17:36
  • 阅读:613947

Native.js示例汇总

分类:Native.js

Native.js虽然强大和开放,但很多web开发者因为不熟悉原生API而难以独立完成。
这篇帖子的目的就是汇总各种写好的NJS代码,方便web开发者。
众人拾柴火焰高,有能力的开发者多多提交NJS代码,大家都会给你点赞的,我们也会为每位共享NJS代码的朋友送上200积分。

Native.js在涉及js层和原生层频繁交互时会有性能问题,js和原生的数据类型也无法全部拉齐。但Native.js是5+app和uni-app通用。如果仅是uni-app,其实推荐更强大的uts,详见

Android平台

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

http://ask.dcloud.net.cn/article/35205

直接拨打电话

http://ask.dcloud.net.cn/question/4035

将程序切换到后台

http://ask.dcloud.net.cn/question/2484

强制弹出软键盘

http://ask.dcloud.net.cn/question/2324

获取安卓设备device.uuid

http://ask.dcloud.net.cn/question/3510

获取内存及CPU信息

http://ask.dcloud.net.cn/question/2202

开启关闭蓝牙

http://ask.dcloud.net.cn/question/4720

监听蓝牙开关状态

http://ask.dcloud.net.cn/article/274

获取蓝牙设备列表

http://ask.dcloud.net.cn/question/8265

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

http://ask.dcloud.net.cn/article/643

NFC数据读取

http://ask.dcloud.net.cn/question/6726

截屏

http://ask.dcloud.net.cn/question/5344

获取MAC地址

http://ask.dcloud.net.cn/question/1511

获取设备当前网速

http://ask.dcloud.net.cn/article/773

打开网络设置

http://ask.dcloud.net.cn/question/1475

打开各种系统设置界面

http://ask.dcloud.net.cn/question/14732

获取WIFI列表

http://ask.dcloud.net.cn/question/12113

调用系统控件播放视频

http://ask.dcloud.net.cn/question/614

调用os通讯录选择控件

http://ask.dcloud.net.cn/question/5783

原生日历提醒插入

http://ask.dcloud.net.cn/article/215

AlarmManager闹钟定时任务

https://ask.dcloud.net.cn/article/36125

调用系统控件裁剪图片

http://ask.dcloud.net.cn/question/8314

复制内容到系统粘贴板

http://ask.dcloud.net.cn/question/2034

调用讯飞的文字转语音功能(TTS)

http://ask.dcloud.net.cn/question/6473

调用其它Activity后通过startActivityForResult获取返回结果

http://ask.dcloud.net.cn/question/5783

接收系统广播消息,如监听安装卸载apk的事件

http://ask.dcloud.net.cn/article/222

判断app是否安装

http://ask.dcloud.net.cn/question/7604

以监听手机飞行模式开关为例说明如何使用Native.js进行BroadcastReceiver广播

http://ask.dcloud.net.cn/question/7661

常驻Android通知栏,不用个推实现本地消息推送(Local Notification)

http://ask.dcloud.net.cn/question/2464

调用原生的socket连接

http://ask.dcloud.net.cn/question/60

启动一个原生service

http://ask.dcloud.net.cn/question/433

基于native.js的文件系统管理功能实现

http://ask.dcloud.net.cn/article/809

打开闪光灯

http://ask.dcloud.net.cn/question/19379

停止、开启个推推送功能

var pushManager = plus.android.importClass("com.igexin.sdk.PushManager");  
var context = plus.android.runtimeMainActivity();  
function enable() {  
    pushManager.getInstance().turnOnPush(context);  
}  

function disable() {  
    pushManager.getInstance().turnOffPush(context);  
}

感谢yeahcheung分享

利用native.js获取手机gps是否开启

http://ask.dcloud.net.cn/question/11890

通过native.js设置系统墙纸

http://ask.dcloud.net.cn/article/651

监听短信验证码

http://ask.dcloud.net.cn/article/676

遍历短信内容

https://ask.dcloud.net.cn/article/12934

限制手机录像时间

http://ask.dcloud.net.cn/question/45756

Android监听电话呼入呼出

http://ask.dcloud.net.cn/article/1006

Android6以上动态权限申请

https://ask.dcloud.net.cn/article/35091

通知栏下载进度条

https://ask.dcloud.net.cn/article/503

打开应用市场

https://ask.dcloud.net.cn/article/12753

检查手机是否被root

https://ask.dcloud.net.cn/article/36471

iOS平台

跳转系统设置页面

var UIApplication = plus.ios.import("UIApplication");  
var application2 = UIApplication.sharedApplication();  
var NSURL2 = plus.ios.import("NSURL");  
var setting2 = NSURL2.URLWithString("app-settings:");  
application2.openURL(setting2);  

plus.ios.deleteObject(setting2);  
plus.ios.deleteObject(NSURL2);  
plus.ios.deleteObject(application2);

如何判断系统功能权限是否开启(比如定位、推送)及提示用户开启权限

https://ask.dcloud.net.cn/article/35915

获取包名

var NSBundle = plus.ios.importClass('NSBundle');  
var bundle = NSBundle.mainBundle();  
console.log(bundle.bundleIdentifier());  
plus.ios.deleteObject(bundle);

获取设备名

http://ask.dcloud.net.cn/question/14691

测试是否安装某应用

http://ask.dcloud.net.cn/question/14430

调用iOS打印API

http://ask.dcloud.net.cn/question/4226

通过native.js登入game center

见Hello H5+里Native.js部分演示及源码。
或在这里搜索“game center”,http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/88

设置获取内容到系统粘贴板

http://ask.dcloud.net.cn/question/3720

打开页面默认弹出键盘

http://ask.dcloud.net.cn/question/2324

播放提示音

http://ask.dcloud.net.cn/question/3962

调用ios的文字转语音(TTS)

http://ask.dcloud.net.cn/question/4175

把base64数据保存为图片

http://ask.dcloud.net.cn/question/6190

设置webview滑动减速度

var webview = plus.ios.currentWebview();  
var scrollView = webview.plusGetAttribute("scrollView");  
scrollView.plusSetAttribute("decelerationRate:",0.99);

打开应用市场

https://ask.dcloud.net.cn/article/12753

ios获取系统的时区id

var NSTimeZone = plus.ios.importClass("NSTimeZone");  
var sys = NSTimeZone.systemTimeZone();  
console.log(sys.plusGetAttribute("name"));

状态栏显示网络请求雪花

var UIApplication = plus.ios.import("UIApplication");  
var sharedApplication = UIApplication.sharedApplication();  
sharedApplication.setNetworkActivityIndicatorVisible(true);  
plus.ios.deleteObject(sharedApplication);

获取GPS授权状态

var CLLocationManager = plus.ios.import("CLLocationManager");  
var authorizationStatus = CLLocationManager.authorizationStatus();  
switch(authorizationStatus) {  
      case 0:  
      /// User has not yet made a choice with regards to this application  
      break;  
      case 1:  
      // This application is not authorized to use location services.  Due  
    // to active restrictions on location services, the user cannot change  
    // this status, and may not have personally denied authorization  
      break;  
      case 2:  
        // User has explicitly denied authorization for this application, or  
    // location services are disabled in Settings.  
      break;  
      case 3:  
        // User has granted authorization to use their location at any time,  
    // including monitoring for regions, visits, or significant location changes.  
      break;  
      case 4:  
       // User has granted authorization to use their location only when your app  
    // is visible to them (it will be made visible to them if you continue to  
    // receive location updates while in the background).  Authorization to use  
    // launch APIs has not been granted.  
      break;  
      case 5:  
     // This value is deprecated, but was equivalent to the new -Always value.  
      break;  
      defalut:  
      break;  
}

获取手机存储空间

var BundleClass = plus.ios.importClass("NSBundle");  
var BundleObj = BundleClass.mainBundle();  
var filenamagerobj = plus.ios.newObject("NSFileManager");  
var FileAttr = plus.ios.invoke(filenamagerobj,"attributesOfFileSystemForPath:error:",BundleObj.bundlePath(),null);  
// NSFileSystemFreeSize 参数获取剩余空间  
// NSFileSystemSize  获取手机总存储空间  
var freeSpace = plus.ios.invoke(FileAttr,"objectForKey:","NSFileSystemFreeSize");  
var numberFormatterObj = plus.ios.newObject("NSNumberFormatter");  
var FreeSpaceStr = plus.ios.invoke(numberFormatterObj,"stringFromNumber:",freeSpace);  
var freeSpace = FreeSpaceStr / 1024/1024/1024;

打开/关闭手机的闪光灯

function turnonLight(isOn) {  
    if(plus.os.name == "iOS") {  
        var avcaptClass = plus.ios.importClass("AVCaptureDevice");  
        if(avcaptClass) {  
            var device = avcaptClass.defaultDeviceWithMediaType("vide");  
            plus.ios.invoke(device, "lockForConfiguration:", null);  
            if(isOn) {  
                plus.ios.invoke(device, "setTorchMode:", 1);  
                plus.ios.invoke(device, "setFlashMode:", 1);  
            } else {  
                plus.ios.invoke(device, "setTorchMode:", 0);  
                plus.ios.invoke(device, "setFlashMode:", 0);  
            }  
            plus.ios.invoke(device, "unlockForConfiguration");  
        }  
    }  
};

显示应用内的ViewController

// NewViewController为应用内创建的原生的ViewController类名,所调用页面的内容需要在原生代码中完成  
var newVCobj = plus.ios.newObject("NewViewController");  
var UIApplicationClass = plus.ios.importClass("UIApplication");  
var UIAppObj = UIApplicationClass.sharedApplication();  
var del = plus.ios.invoke(UIAppObj,"delegate");  
// 如果当前应用delegate对象包含UIWindow对象并且变量名命名为“window”可以这么写,  
// 否则需要根据实际代码情况修改  
// 应用的delegate对象也可以添加一个返回UIViewController的方法  
var appWindowObj = plus.ios.invoke(del,"window");  
var appRootController = plus.ios.invoke(appWindowObj,"rootViewController");  
plus.ios.invoke(appRootController,"presentViewController:animated:completion:",newVCobj,"YES",null);

看完这些例子,是不是觉得JS特别强大?
赶快拿去用起来吧!

209 关注 分享
aaaa hilongjw 有毒葡萄 skyarche 半杯可乐 1373574190 Yummy noprom 蔡繁荣 tosmaller 匿名 Nelson zhuzhu1 地图 未知的过程 MooGu 阿士大夫 1***@qq.com 小苏 爪爪后 ___K l***@sina.com 乐天愁 smileboyi Float 木头很努力 z***@163.com 2050 Trust 无名2015 caifeng112 啸天 帅得被人砍 易凡尘 7***@qq.com 水灵退散 l***@foxmail.com f***@qq.com 你猜猜我是谁 7***@qq.com 孟泽伟 Dojoson 爱死了小怪兽 爱折腾的章鱼猫 l***@163.com 1***@qq.com 超人爷爷 1***@qq.com iamhuhongtao 5***@qq.com

要回复文章请先登录注册

蒋某某

蒋某某

回复 DCloud_heavensoft :
求njs应用ios直接拨号与读取通话记录的实例代码? 看了这几个ios的示例还是没写成功
2015-08-07 13:13
DCloud_heavensoft

DCloud_heavensoft

回复 microkj :
那不需要Native.js,plus就有,http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.setBadgeNumber
2015-06-25 01:05
microkj

microkj

如何设置程序图标右上角的提示数字,可以实现吗?
2015-06-15 08:31
linkerscott

linkerscott

要怎么获取设备网络连接信息啊?比如wifi的ssid
2015-06-04 12:13
Aylchen

Aylchen

回复 yeahcheung :
请问引入个推的SDK是要放在哪儿里这么用才有效,还是说这么直接写就可以了
2015-03-20 14:11
闪闪

闪闪

回复 yeahcheung :
使用plus.downloader进行下载操作,用Notification的Progress也是一种办法。
2015-01-27 15:59
yeahcheung

yeahcheung

调用系统DownloadManager在提示栏进行文件下载

//程序下载目录获取
plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
fs.root.getDirectory('update', {create:true}, function(entry){
var savePath = 'file://' + entry.fullPath + '/update.apk';
var donwloadUrl = 'http://172.30.40.81/update_test_v1.0.1.apk';
download(donwloadUrl, savePath);
}, function(e){
alert( "准备升级操作,打开update目录失败:"+e.message );
});
// 可通过fs进行文件操作
alert( "Request file system success!" );
}, function(e) {
alert( "Request file system failed: " + e.message );
});

function download(donwloadUrl, savePath) {
var url = plus.android.importClass("android.net.Uri");
var downloadManage = plus.android.importClass("android.app.DownloadManager");
var main = plus.android.runtimeMainActivity();
var file = plus.android.importClass('java.io.File');
//创建下载请求
var down = new downloadManage.Request(url.parse(donwloadUrl));
//设置允许使用的网络类型,这里是移动网络和wifi都可以
down.setAllowedNetworkTypes(downloadManage.Request.NETWORK_MOBILE|downloadManage.Request.NETWORK_WIFI);
//禁止发出通知,既后台下载
down.setShowRunningNotification(true);
//不显示下载界面
down.setVisibleInDownloadsUi(true);
//设置下载后文件存放的位置
down.setDestinationUri(url.parse(savePath));
//down.setDestinationInExternalFilesDir(main, null, "qqinput.apk");
//将下载请求放入队列
var manager = main.getSystemService(main.DOWNLOAD_SERVICE);

//下载完成后通知事件(由于nativeJS不支持继承,暂未实现)
/*
var receiver = plus.android.implements("android.content.BroadcastReceiver", {
"onReceive":function(context, intent){
console.log(intent); // 输出“Invoked Object’s name: Tester”
}
});

var intentFilter = plus.android.importClass("android.content.IntentFilter");
main.registerReceiver(receiver, new intentFilter(downloadManage.ACTION_DOWNLOAD_COMPLETE));
*/
var downloadId = plus.android.invoke(manager, "enqueue", down);
}
2015-01-06 17:28
yeahcheung

yeahcheung

通过native.js停止、开启个推推送功能
var pushManager = plus.android.importClass("com.igexin.sdk.PushManager");
var context = plus.android.runtimeMainActivity();
function enable() {
pushManager.getInstance().turnOnPush(context);
}

function disable() {
pushManager.getInstance().turnOffPush(context);
}
2014-12-23 11:02
娃娃亲亲

娃娃亲亲

响应,感觉真正用好hb的人不多,希望能火起来
2014-12-12 09:21