Native.js雖然強大和開放,但很多web開發者因為不熟悉原生API而難以獨立完成。
這篇帖子的目的就是匯總各種寫好的NJS代碼,方便web開發者。
眾人拾柴火焰高,有能力的開發者多多提交NJS代碼,大家都會給你點贊的,我們也會為每位共享NJS代碼的朋友送上200積分。
Android平台
Android動態權限申請
https://ask.dcloud.net.cn/article/35861
監聽手機鎖屏,解鎖,開屏
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
調用系統控件裁剪圖片
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
限制手機錄像時間
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
iOS平台
如何判斷系統功能權限是否開啟及提示用戶開啟權限
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);
打開ios的Wifi設置頁面
http://ask.dcloud.net.cn/question/7797
判斷是否開啟消息通知
http://ask.dcloud.net.cn/question/4497
http://ask.dcloud.net.cn/article/35727
檢測iOS是否允許使用相機(感謝小鬧分享)
http://ask.dcloud.net.cn/article/188
打開應用市場
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特別強大?
趕快拿去用起來吧!