Tizen开发 - Application Control
来源:互联网 发布:停车场管理问题c语言 编辑:程序博客网 时间:2024/05/22 05:20
Tizen::App::AppControl 是tizen的标准机制,它可以调用其他应用export出的一些操作,比如call, media list, brower等等。同时你也可以导出你自己的特定的操作。
1. Using AppControls
使用Tizen::App::AppManager 来获得AppControl的实例,AppManager能发现需要调用的application。
1) Application ID 标示每个application control提供者,系统提供的ID有特定标示,如"tizen.phone";
2) Operation ID 标示Application Control的行为。系统提供的operation ID格式为"http://tizen.org/appcontrol/operation/<verb>",例如"http://vendor.com/appcontrol/operation/pick"
3) Resolving AppControls. 显示的resolving: AppManager::FindAppControlN()通过application ID 和operation ID 直接找到特定的application control;不明显的resolving:使用 AppManager::FindAppControlsN() 并提供operation ID,URI,MIME type等来获取一个application control列表;然后appcontrol调用start来启动相关的application。 AppControl::FindAndStart()提供了查询显示和调用的一条龙服务。
4) 当AppControl执行结束后,执行结果会被Tizen::App::IAppControlResponseListener接口的OnAppControlCompleteResponseReceived事件处理函数返回。
5) 使用AppControl调用一个Application的过程如下:
2. Developing with AppControls
1)导出application的功能,在manifest file 中配置;
每个native application在没有显示指定AppControl的情况下都能导出一个默认的AppControl。
AppManager::LaunchApplication()能使用这个默认的AppControl,使用"http://tizen.org/appcontrol/operation/main"这个默认的Operation ID。
为了处理来自其他应用的请求,提供operation的应用要实现 IAppControlProviderEventListener::OnAppControlRequestReceived() event handler.
如果没有实现该事件处理函数,如果收到一个来自其他的应用的请求,你的应用会进入前台,不会出现任何提示。
2)在处理结束后,AppControlProviderManager::SendAppControlResult()使用request ID将执行结果返回给调用application。如果被调用者终止了调用请求,没有发送回结果,tizen就会使用APP_CTRL_RESULT_TERMINATED 作为结果调用 IAppControlResponseListener::OnAppControlCompleteResponseReceived();
3)能处理并发的请求。
2)处理AppControl请求的流程如下:
3. example code
调用FileManager AppControl;
1) 效果图:
2) 代码
voidMyAppClass::AppControlMediaSample(void){ String mime = L"*/*"; HashMap extraData; extraData.Construct(); String selectKey = L"http://tizen.org/appcontrol/data/selection_mode"; String selectVal = L"multiple"; extraData.Add(&selectKey, &selectVal); AppControl* pAc = AppManager::FindAppControlN(L"tizen.filemanager", L"http://tizen.org/appcontrol/operation/pick"); if (pAc) { pAc->Start(null, &mime, &extraData, this); delete pAc; }}voidMyAppClass::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData){ // This method is invoked when an application control callback event occurs if (appId.Equals(L"tizen.filemanager")&& operationId.Equals(L"http://tizen.org/appcontrol/operation/pick")) { AppCtrlResult mediaResult = appControlResult; if (appControlResult == APP_CTRL_RESULT_SUCCEEDED) { AppLog("Media list retrieving succeeded."); // Use the selected media paths if (pExtraData) { IMapEnumerator* pEnum = pExtraData->GetMapEnumeratorN(); while (pEnum->MoveNext() == E_SUCCESS) { String* pKey = dynamic_cast<String*>(pEnum->GetKey()); if (pKey->Equals(String(L"http://tizen.org/appcontrol/data/selected"))) { // The value is IList. IList* pValueList = dynamic_cast<IList*>(pEnum->GetValue()); if (pValueList) { for (int i=0; i<pValueList->GetCount(); i++) { String* pValue = dynamic_cast<String*>(pValueList->GetAt(i)); // Use the file path } } } } delete pEnum; } } else if (appControlResult == APP_CTRL_RESULT_FAILED) { AppLog("Media list retrieving failed."); } else if (mediaResultappControlResult == APP_CTRL_RESULT_CANCELED) { AppLog("Media list retrieving was canceled."); } else if (appControlResult == APP_CTRL_RESULT_TERMINATED) { AppLog("Media list retrieving was terminated."); } else if (appControlResult == APP_CTRL_RESULT_ABORTED) { AppLog("Media list retrieving was is aborted."); } }}
- Tizen开发 - Application Control
- Tizen开发 - Data Control
- Tizen 开发(5) - UI Application Fundamentals
- Tizen开发(6) - Service Application Fundamentals
- Tizen开发 - UI: Creating the Application UI
- Tizen开发(4) - Tizen::App
- Tizen 快速开发入门
- tizen开发(2)
- tizen开发(3)
- Tizen开发 - Package Manage
- Tizen开发环境设置
- Tizen不支持原生应用开发
- Tizen 开发 - UI:Scene Management
- Tizen
- tizen
- Tizen
- Tizen——建立Tizen开发环境(ubuntu)
- Wac应用程序开发环境搭建(4Tizen)
- asp.net跳转页面的三种方法比较
- jquery笔记
- 小结——2013.5.6~2013.5.20
- 【91xcz】缓存文件目录修改方法一览
- 远程连接oracle数据库ORA-12154错误
- Tizen开发 - Application Control
- C#导出到EXCEL 版本2
- 高精度大整数加法
- 面向海量服务的设计原则和策略总结
- HRESULT值意义
- Map 增强for循环
- 设计模式 - 命令模式
- 几个常用的Javascript字符串处理函数简介
- HDU1088:Write a simple HTML Browser