成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Firefox OS中跨應(yīng)用數(shù)據(jù)交互

移動開發(fā)
由于受到安全的限制,WEB應(yīng)用跨域調(diào)用實現(xiàn)起來是比較麻煩的。傳統(tǒng)的做法有服務(wù)器代理、jsonp接口等,但在firefox os中并不需要如此大費周折。在firefox os中已經(jīng)提供了跨應(yīng)用交互的機制,雖然目前來看并不是特別的方便,但已經(jīng)可以實現(xiàn)基本的跨應(yīng)用交互的App了。本文將以一個實際的DEMO來講解B2G的跨應(yīng)用調(diào)用。

由于受到安全的限制,WEB應(yīng)用跨域調(diào)用實現(xiàn)起來是比較麻煩的。傳統(tǒng)的做法有服務(wù)器代理、jsonp接口等,但在firefox os中并不需要如此大費周折。在firefox os中已經(jīng)提供了跨應(yīng)用交互的機制,雖然目前來看并不是特別的方便,但已經(jīng)可以實現(xiàn)基本的跨應(yīng)用交互的App了。本文將以一個實際的DEMO來講解B2G的跨應(yīng)用調(diào)用。

概要介紹

本文將開發(fā)兩個應(yīng)用,應(yīng)用一:Caller,應(yīng)用二:Receiver

Caller中有一個Show Images的按鈕,點擊該按鈕將啟動Receiver,Receiver中提供了一些圖片瀏覽的功能,在Receiver中選擇圖片后,點擊Select按鈕,將把圖片傳送到Caller中,并在Caller中展現(xiàn)該選擇的圖片

整體效果如下

 

Caller應(yīng)用

[[60720]]

Receiver應(yīng)用

細(xì)節(jié)說明

Receiver

在Firefox OS中,要讓應(yīng)用可被其他應(yīng)用調(diào)用,需要在該應(yīng)用的manifest.webapp中進(jìn)行聲明。我們看一下Receiver的manifest.webapp文件

  1. {  
  2.      "name": "Receiver",  
  3.      "launch_path": "/index.html",  
  4.      "developer": {  
  5.          "name": "chyblog",  
  6.          "url": "http://www.chyblog.com"  
  7.      },  
  8.      "icons": {  
  9.          "120": "/style/icons/Receiver.png"  
  10.      },  
  11.      "permissions": [  
  12.          "background",  
  13.          "backgroundservice",  
  14.          "attention",  
  15.          "contacts",  
  16.          "settings",  
  17.          "desktop-notification"  
  18.      ],  
  19.      "activities": {  
  20.          "pick": {  
  21.              "filters": {  
  22.                  "type": ["image/png", "image/gif"]  
  23.              },  
  24.              "returnValue": true,  
  25.              "disposition": "inline"  
  26.          }  
  27.      }  
  28.  }  

其中activities屬性聲明了一個web activity,取名為pick,其中filters屬性告訴system對哪些類型的請求響應(yīng),Receiver應(yīng)用,可以響應(yīng)名稱為pick,type為image/png或者image/gif類型的響應(yīng)。

returnValue是一個布爾類型的屬性,為true時,聲明該web activity需要返回數(shù)據(jù)給調(diào)用它的應(yīng)用,false則不需要返回數(shù)據(jù)給調(diào)用者

disposition屬性有兩種可選值,window和inline,如果為window,則會以啟動一個新應(yīng)用的方式打開,如果為inline,則會臨時啟動一個畫面顯示該應(yīng)用的界面。

在Receiver應(yīng)用中,還需要用js編寫響應(yīng)調(diào)用的處理代碼

  1. navigator.mozSetMessageHandler('activity', webActivityHandler);  
  2.  
  3. var activityRequest;  
  4.  
  5. var webActivityHandler = function(request) {  
  6.     activityRequest = request;  
  7.  
  8.     document.getElementById('button').disabled = '';  
  9.     document.getElementById('cancelButton').disabled = '';  
  10.  };  

以上代碼注冊了一個事件響應(yīng)句柄,并將請求者的信息保存在全局變量activityRequest中

當(dāng)用戶點擊Select按鈕后,將把圖片信息傳送給Caller。代碼如下

  1. function select() {  
  2.     if (!activityRequest) {  
  3.         alert('There are no any pending activity request.');  
  4.         return;  
  5.     }  
  6.  
  7.     // Return the request  
  8.     activityRequest.postResult({  
  9.         type : 'image/png',  
  10.         text : getBase64Image(selectedImg)  
  11.     });  
  12.     activityRequest = null;  
  13.  
  14.     // close app, currently useless,  
  15.     // see https://bugzilla.mozilla.org/show_bug.cgi?id=789392 
  16.     window.close();  
  17. };  

由于兩個應(yīng)用的數(shù)據(jù)交互只能使用文本信息傳遞,這里將Receiver中的圖片以base64文字編碼的方式傳給Caller,在Caller中,將該文本設(shè)置到backgroundImage中,即可顯示,獲取圖片的base64編碼的代碼如下

  1. function getBase64Image(imgSrc) {  
  2.     var img = new Image();  
  3.     img.src = imgSrc;  
  4.     var canvas = document.createElement("canvas");  
  5.     canvas.width = img.width;  
  6.     canvas.height = img.height;  
  7.     var ctx = canvas.getContext("2d");  
  8.     ctx.drawImage(img, 0, 0);  
  9.     var dataURL = canvas.toDataURL("image/png", 0.2);  
  10.     return dataURL;  
 

Caller

Call應(yīng)用中,主要是觸發(fā)Receiver調(diào)用的響應(yīng)和接受返回數(shù)據(jù)的處理

Call首先創(chuàng)建一個activity請求,需要告訴system,請求的名稱和類型。并注冊請求成功返回和請求失敗時的處理邏輯。而請求如何去調(diào)用,完全由system控制。創(chuàng)建請求的代碼如下

  1. var a = new MozActivity({ name : 'pick', data : { type : 'image/png' } }); a.onsuccess = function() { reopenApp(); document.getElementById('showImg').style.backgroundImage = "url(" + this.result.text + ")"; document.getElementById('result').textContent = 'well done'; }; a.onerror = function() { reopenApp(); document.getElementById('showImg').style.backgroundImage = ""; document.getElementById('result').textContent = '(canceled)'; };

需要強調(diào)的是,Caller和Receiver是兩個獨立的應(yīng)用,兩者之間的交互都是system app負(fù)責(zé)的。我們需要做的,就是聲明web activity,觸發(fā)請求和響應(yīng)請求。

源碼下載:http://chyblog-chyblog.stor.sinaapp.com/wp-content/uploads/2012/10/webActivity.zip

 

責(zé)任編輯:Yeva 來源: chyblog.com
相關(guān)推薦

2012-09-04 13:35:24

Firefox OS

2013-01-14 12:25:49

Firefox OS

2013-01-14 12:19:48

Firefox OSFirefox OS

2013-01-14 12:24:06

Firefox OS

2013-01-14 13:21:09

Firefox os

2013-06-24 09:23:25

Firefox OS火狐手機Android

2013-01-14 12:53:13

Firefox OSIndexedDB

2013-01-14 12:10:46

firefox osfirefox os

2013-01-14 13:14:11

Firefox OS

2013-09-02 11:18:06

Firefox OSMarketplace

2012-09-12 09:08:54

Firefox OS

2012-09-29 10:24:14

Firefox OS

2014-01-09 14:07:46

Firefox OS操作系統(tǒng)

2014-06-16 10:20:46

Firefox OSWeb Apps

2015-11-12 13:47:53

Firefox OSAPPFirefox

2013-02-25 09:15:30

MWC 2013Firefox OS

2009-03-23 09:57:19

2013-01-08 14:58:48

Firefox OS

2012-07-03 10:15:50

火狐OSFirefox

2013-04-24 10:19:47

Firefox OS火狐手機
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久亚洲一区 | 成人国产精品久久久 | 亚洲精精品 | 黄视频网站免费观看 | 午夜小视频免费观看 | 国产成人午夜电影网 | 欧美无乱码久久久免费午夜一区 | 99热最新网址 | 久久亚洲国产 | 91成人免费看| 亚洲国产精品久久久久 | 古典武侠第一页久久777 | 成人毛片一区二区三区 | 亚洲国产网站 | 亚卅毛片 | 99精品视频一区二区三区 | 欧美在线视频一区 | 精精精精xxxx免费视频 | 久久久精品高清 | 成人在线一区二区 | www国产成人免费观看视频,深夜成人网 | 国产精品欧美精品日韩精品 | 天堂中文av | 日韩在线精品 | 99免费在线观看 | 91n成人| 国产亚洲一区二区三区在线 | 国产黄色小视频 | 欧美亚州综合 | 一区二区在线看 | 在线观看的av | jizz亚洲人 | 一区二区免费 | 亚洲精品一区中文字幕 | 日韩精品免费看 | 欧洲妇女成人淫片aaa视频 | 国产精品18hdxxxⅹ在线 | 精品国产一区二区三区性色av | 中文字幕乱码亚洲精品一区 | 永久精品 | 国产高清精品一区二区三区 |