怎样使用应用控制接口来获取和处理应用程序中的数据

怎样使用应用控制接口来获取和处理已启动的应用程序中的数据

在本教程中,我们将学会怎样使用Tizen的应用控制接口从已启动或提供者的应用程序中获取和处理数据,并将控制权(携带已处理的数据)传递给提出了请求的应用程序。 应用程序控制允许你启动其他应用程序,其功能是你的应用程序所需要的。

要了解更加详细的应用程序控制请求的类型,请参考Application control。 下面的例子使用了直接启动方式来启动应用程序。

如果当前的应用程序要启动另外的应用程序,那当前的应用程序需要做如下处理

var appControl =  new tizen.ApplicationControl(
        "http://tizen.org/appcontrol/operation/share",
        "shareimage.html",
        "image/*",
         null,
        [new tizen.ApplicationControlData("images", [imagedata1, imagedata2])] ); 

	//Explicit launch with control data
	tizen.application.launchAppControl( appControl, "3lqX1bKgbi.ServiceApp",
	function() {console.log("launch application control succeed"); },
	function(e) {console.log("launch application control failed. reason: " + e.message); },
	appControlReplyCallback );

appControlReplyCallback 这是一个回调函数接口,它指示作为已提出请求的应用程序控制的答复而被触发的回调是成功还是失败。

var appControlReplyCallback = {
	    onsuccess: function(data) {
	    	console.log('Received reply from the provider app..');
	    	for (var i = 0; i < data.length; i++) {
	           console.log("#" + i + " key:" + data[i].key);
	           for (var j = 0; j < data[i].value.length; j++) {
	              console.log("   value#" + j + ":"+data[i].value[j]);
	           }
	       }
	    },
	    // Function to handle the failure case
	    onfailure: function() {
	       console.log('The launch application control failed');
	    }
	 }

如果应用程序启动成功,则控制会被传递给提供者应用程序。 提供者应用程序必须调用 getRequestedAppControl() 应用程序接口方法来获取 RequestedApplicationControl 与控制请求一起传递给它的对象的引用。

reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();

一旦你有了所请求的application control对象的引用,你就能用该引用来获取传递过来的数据了。

//Function which processes the data passed
function processData(appControl) {
   if (reqAppControl) {
     var reqData = reqAppControl.appControl.data;
        for (var i = 0; i < data.length; i++) {
           console.log("#" + i + " key:" + data[i].key);
           for (var j = 0; j < data[i].value.length; j++) {
              console.log("   value#" + j + ":"+data[i].value[j]);
              // Process the data
           }
	 }
    }
}

数据处理完之后,我们就需要使用RequestedApplicationControl接口 replyResult() 将control传回给请求者应用程序。 replyFailure()

 reqAppControl.replyResult(processedData);

现在,control被传到了请求者应用程序, appControlReplyCallback 启动成功的回调函数就会被触发。

在提供者应用程序中,你需要按照如下的方式定义app-control配置文件,

<tizen:app-control>
    <tizen:src name="shareimage.html"/>
    <tizen:operation name="http://tizen.org/appcontrol/operation/share"/>
    <tizen:mime name="image/*"/>
</tizen:app-control>

你也可以使用应用程序的只读共享目录将数据导出到其他的应用程序,因为每个应用程序都维护它自己的只读共享目录。 下面的URI会告诉你怎样获取到共享目录。

function getSharedDirURI() {
	var sharedDir = tizen.application.getAppSharedURI("kto5jikgul");
	console.log("shared directory : " + sharedDir);
}

getAppSharedURI 使用应用程序的ID(作为参数)来获取其他应用程序的共享目录的URI。 如果没有提供应用程序的ID(或设置为NULL),那正在调用的应用程序的共享目录URI就会被返回。