安卓混合開發利用:fastsmart.js

fs = function(){};
(function($){
	
	
	var readyTest = /complete|loaded|interactive/;	

	/**
	 * 獲取函數內容字符串
	 * @param {Object} fun
	 */
	$.functionToJavaParam=function(fun)
	{
		var s = fun.toString() ;
		if (s.search(/^\s*function\s*\(/) != -1) {
		//if(s.indexOf("function (")>=0) {
            
            		return s;
        	}
		var _text = s.substr(9);
		return _text.substr(0,_text.indexOf('('));
	};
	
	/**
	 * 網頁加載完成
	 * @param {Object} callback
	 */
	$.Ready = function(callback)
	{

			if (readyTest.test(document.readyState)) {
					callback();
				} else {
					 document.addEventListener('DOMContentLoaded', function() {
						callback();
				}, false);
			}

		return this;
	};
	
	/**
	 * 如果用了iscroll,必須調用這一句
	 */
	$.iscrollInit = function(){
		document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
	};
	
	/*
	 * 獲取系統類型
	 */
	$.getSystemType = function(){
		var ua = navigator.userAgent.toLowerCase();
		if (/iphone|ipad|ipod/.test(ua)) {
		    return "ios" ;		
		} else if (/android/.test(ua)) {
		    return "android" ;	
		}	
		return "undefined" ;
	};
	
	
	/**
	 * 手機按了返回鍵
	 * @param {Object} callback
	 */
	$.onKeyBack = function(callback){	
		if($.getSystemType()=="android")
			window.KeyEvent.onBack($.functionToJavaParam(callback)) ;
	} ;
	
	/**
	 * 不關閉程序,在後臺運行
	 */
	$.runToBack = function(){
		if($.getSystemType()=="android")
			window.appSystem.runToBack() ;		
	};

	// 在logact裏寫log
	$.log = function(str)
	{
		if($.getSystemType()=="android")
			window.appSystem.Log(str);
        else if($.getSystemType()=="ios")
            $$ios.log(str);
		else
			console.log(str) ;
	};
	
	// 退出系統
	$.exit = function()
	{
		if($.getSystemType()=="android")
			window.appSystem.exit();
        else if($.getSystemType()=="ios")
            $$ios.quit();
	};
	
	// 打開新窗口url
	$.open = function(url,options)
	{		
		var to = true ;                
		if(typeof($.onOpen)!='undefined')
			to=$.onOpen(url) ;
		if(to==false)
			return ;
                var date = new Date();
                var times = date.getTime();
                fs.session.put("startShiYongTime", times.toString());
		if($.getSystemType()=="android")
                {
                    var ex = options || {} ;
                    var optstr = JSON.stringify(ex) ;
                    var opt = JSON.parse(optstr) ;
                    window.appSystem.open(url,JSON.stringify(opt)) ;
                }
        else if($.getSystemType()=="ios")
            $$ios.pushPage(url,options);
		else
			window.location.href = url ;
	};	
	
	// 重新加載url
	$.redirect = function(url,options)
	{		
		var to = true ;
		if(typeof($.onRedirect)!='undefined')
			to=$.onRedirect(url) ;
		if(to==false)
			return ;
		if($.getSystemType()=="android")
                {
                    var ex = options || {} ;
                    var optstr = JSON.stringify(ex) ;
                    var opt = JSON.parse(optstr) ;
                    window.appSystem.redirect(url,JSON.stringify(opt)) ;
                }
        else if($.getSystemType()=="ios")
            $$ios.redirectPage(url,options);
		else
			window.location.href = url ;
	};	
	
	$.closeAndRedirect = function(url,options){
		var to = true ;
		if(typeof($.onRedirect)!='undefined')
			to=$.onRedirect(url) ;
		if(to==false)
			return ;
		if($.getSystemType()=="android")
                {
                    var ex = options || {} ;
                    var optstr = JSON.stringify(ex) ;
                    var opt = JSON.parse(optstr) ;
                    window.appSystem.closeAndRedirect(url,JSON.stringify(opt)) ;
                }
        else if($.getSystemType()=="ios")
            $$ios.redirectPage(url,options);
		else
			window.location.href = url ;
	};
	
	// 關閉窗口
	$.close = function()
	{		
		var to = true ;
		if(typeof($.onClose)!='undefined')
			to=$.onClose() ;
		if(to==false)
			return ;		
		if($.getSystemType()=="android")
			window.appSystem.close() ;
        else if($.getSystemType()=="ios")
            $$ios.popPage();
		else		
		window.history.back(-1) ; 
	};
	
	// 重新加載當前頁
	$.reload = function(){
		if($.getSystemType()=="android")
			window.appSystem.reload() ;
        else if($.getSystemType()=="ios")
            $$ios.reloadPage();
	};
	
	
	/**
	 * 重啓APP,在增量後可使用
	 */
	$.reStartApp = function(){
		if($.getSystemType()=="android")
			window.appSystem.reStartApp() ;		
        else if($.getSystemType()=="ios")
            $$ios.restartApp();
	};
	
	/**
	 * ajax 請求
	 * @param url
	 * @param {Object} options 與mui.ajax一至
	 */
	$.ajax = function(url,options) {
		if($.getSystemType()=="android")
		{
			$.log(JSON.stringify(options)) ;
			var success = null ;
			if("success" in options)
			 success = $.functionToJavaParam(options.success) ;
			var error = null ;
			if("error" in options)
			 error = $.functionToJavaParam(options.error) ;
			window.ajax.Ajax(url, JSON.stringify(options),success,error);
		}
		/**
		 * 在這裏加入ios的實現,要求跨域
		 */
        else if($.getSystemType()=="ios"){
            $$ios.ajax(url,options);
        }
		else
			$.log("該瀏覽器不支持ajax!") ;
	};
	
	$.shared = function(){} ;
	
	$.session = function(){} ;
	
	/**
	 * 獲取當前頁ID
	 */
	$.getID = function(){
		if($.getSystemType()=="android")
			return window.appSystem.getID();
		return undefined ;
	};
	
    /**
     * 設置當頁ID
     * @param {Object} id
     */
    $.setID = function (id) {
        if ($.getSystemType() == "android")
            return window.appSystem.setID(id);
        else if ($.getSystemType() == "ios")
            return $$ios.getPageID();
        return undefined;
    };
	/**
	 * 給指定頁面發消息 可以用 $(...).on接收
	 * @param {Object} id
	 * @param {Object} event
	 * @param {Object} args
	 */
	$.sendMsgTo = function(id,event,args){
		if($.getSystemType()=="android")
            window.appSystem.sendMsgTo(id, event, args);
        else if($.getSystemType()=="ios")
            $$ios.sendMsgTo(id,event,args);
	} ;
	
	/**
	 * 當前webview傳消息
	 * @param {Object} event
	 * @param {Object} args
	 */
	$.sendMsg = function(event,args){
		if($.getSystemType()=="android")
			return window.appSystem.sendMsg(event,args);						
        else if($.getSystemType()=="ios")
            $$ios.sendMsg(event,args);
	};
	
	/**
	 * 發送消息
	 * @param {Object} phone
	 * @param {Object} text
	 */
	$.sendSMS = function(phone,text){
		if($.getSystemType()=="android")
			window.appSystem.sendSMS(phone,text);						
        else if($.getSystemType()=="ios")
            $$ios.sendSms(phone,text);
	} ;
	
	/**
	 * 動態加載,只支持安卓
	 * @param {Object} classname
	 */
	$.loadClass = function(classname){
		if($.getSystemType()=="android")
			return window.appSystem.loadClass(classname) ;
	} ;
	
	/**
	 * 動態調用android方法
	 * @param {Object} clsObj
	 * @param {Object} funname
	 * @param {Object} args
	 */
	$.doInvoke = function(clsObj,funname,args){
		if($.getSystemType()=="android")
			return window.appSystem.doInvoke(classname,funname,args) ;
	} ;
	
	/**
	 * 獲取GPS定位
	 * @param {Object} callback
	 */
	$.getCurrentPosition = function(onSuccess,onError,options){
		if (navigator.geolocation)
		{
		    navigator.geolocation.getCurrentPosition(onSuccess,onError,options);
		}
		else
			$.log("該瀏覽器不支持location!") ;		
	};
	
	/**
	 * 獲取GPS定位,定時
	 * @param {Object} callback
	 */
	$.watchPosition = function(onSuccess,onError,options){
		if (navigator.geolocation)
		{
		    return navigator.geolocation.watchPosition(onSuccess,onError,options);
		}
		else
			$.log("該瀏覽器不支持location!") ;		
		return -1 ;
	};
	
	/**
	 * 停止定位
	 * @param {Object} id
	 */
	$.clearWatch = function(id){
		if (navigator.geolocation)
		{
		    return navigator.geolocation.clearWatch(id) ;
		}
		else
			$.log("該瀏覽器不支持location!") ;		
	}		
    $.upload = function (url, path, fileName, update, result) {
        if ($.getSystemType() == "android")
            return window.appSystem.upload(url, path, fileName, update, result);

    }
})(fs) ;

/*
 * shared 存儲
 */
(function($,shared){
	/**
	 * 獲取手機中的存儲數據
	 * @param {Object} key
	 */
	shared.get = function(key,defaultstr){
		if($.getSystemType()=="android")
			return window.store.get(key, defaultstr);
        else if($.getSystemType()=="ios")
            return $$ios.getShared(key,defaultstr);
		else
		{
			$.log("該瀏覽器不支持storeGet!") ;
			return defaultstr ;
		}
				
	} ;
	
	/**
	 * 設置手機中的存儲數據
	 * @param {Object} key
	 */
	shared.put = function(key,value){
		if($.getSystemType()=="android")
			window.store.put(key,value);
        else if($.getSystemType()=="ios")
            $$ios.setShared(key,value);
		else
			$.log("該瀏覽器不支持storePut!") ;
				
	} ;	
	
	
})(fs,fs.shared) ;

/**
 * session 使用
 */

(function($,session){
	/**
	 * 設置手機中的暫存數據
	 * @param {Object} key
	 */
	session.put = function(key,value){
		if($.getSystemType()=="android")
			window.session.put(key,value);
         else if($.getSystemType()=="ios") {
            $$ios.setSession(key,value);
         }
		else
			$.log("該瀏覽器不支持sessionPut!") ;
				
	} ;	
	
	/**
	 * 獲取手機中的暫存數據
	 * @param {Object} key
	 */
	session.get = function (key, defaultstr){
		if($.getSystemType()=="android")
			return window.session.get(key, defaultstr);
        else if($.getSystemType()=="ios")
            return $$ios.getSession(key,defaultstr);
		else
		{
			$.log("該瀏覽器不支持sessionGet!") ;
			return defaultstr ;
		}
				
	} ;	
	
	/**
	 * 獲取手機中的暫存數據所有key
	 */
	session.keys = function(){
		if($.getSystemType()=="android")
			return window.session.keys();
        else if($.getSystemType()=="ios")
            return $$ios.allSessionKey();
		else
		{
			$.log("該瀏覽器不支持sessionKeys!") ;
			return null ;
		}
				
	} ;	
	
	/**
	 * 獲取手機中的暫存數據所有key
	 */
	session.clear = function(){
		if($.getSystemType()=="android")
			window.session.clear();
        else if($.getSystemType()=="ios")
            return $$ios.clearSession();
		else
		{
			$.log("該瀏覽器不支持sessionClear!") ;
		}
				
	} ;	
	
})(fs,fs.session) ;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章