【问题标题】:How to pass arguments to tizen native application?如何将参数传递给 tizen 本机应用程序?
【发布时间】:2013-11-18 11:55:10
【问题描述】:

我正在尝试创建一个可以启动另一个应用程序的 tizen 本机应用程序。我想创建一个应用程序,以便我可以将应用程序名称作为参数提供给我要开发的应用程序。

以下是我为了解如何将命令行参数传递给应用程序以及如何处理应用程序中的参数而遵循的步骤: 添加了日志语句以检查有多少参数传递给我的应用程序

for (int i = 0; i < argc; i++)
{
    pArgs->Add(*(new String(pArgv[i])));
    AppLog("index : %d, argument : %s", i, pArgv[i]);
}

在 sdb -e shell 中使用 launch_app 启动应用程序

launch_app $hello_world_application (without arguments).

观察到传递给osp_main 的参数计数为6。

日志:

11-14 20:11:37.411 : INFO / tizenSrvAppProject2 ( 3904 : 3904 ) : int OspMain(int, char **)(24) > Application started, arg count : 6
11-14 20:11:37.411 : INFO / tizenSrvAppProject2 ( 3904 : 3904 ) : int OspMain(int, char **)(30) > index : 0, argument : /opt/apps/Xbfv5mXrHt/bin/tizenSrvAppProject2
11-14 20:11:37.421 : INFO / tizenSrvAppProject2 ( 3904 : 3904 ) : int OspMain(int, char **)(30) > index : 1, argument : `zaybxcwdveuftgsh`
11-14 20:11:37.421 : INFO / tizenSrvAppProject2 ( 3904 : 3904 ) : int OspMain(int, char **)(30) > index : 2, argument : __AUL_STARTTIME__
11-14 20:11:37.421 : INFO / tizenSrvAppProject2 ( 3904 : 3904 ) : int OspMain(int, char **)(30) > index : 3, argument : NAAAAAEEAAASAAAAX19BVUxfU1RBUlRUSU1FX18AEgAAADEzODQ0Mjc0OTYvNzU2OTM1AA==
11-14 20:11:37.421 : INFO / tizenSrvAppProject2 ( 3904 : 3904 ) : int OspMain(int, char **)(30) > index : 4, argument : __AUL_CALLER_PID__
11-14 20:11:37.421 : INFO / tizenSrvAppProject2 ( 3904 : 3904 ) : int OspMain(int, char **)(30) > index : 5, argument : KAAAAAEEAAATAAAAX19BVUxfQ0FMTEVSX1BJRF9fAAUAAAAzOTAzAA==
11-14 20:11:38.231 : INFO / tizenSrvAppProject2 ( 3904 : 3904 ) : virtual bool tizenSrvAppProject2App::OnAppInitializing(Tizen::App::AppRegistry &)(50) > Timer construct status : [E_SUCCESS]


launch_app Xbfv5mXrHt.tizenSrvAppProject2 "test1"

观察到传递给osp_main 的参数计数为6。

launch_app Xbfv5mXrHt.tizenSrvAppProject2 "test1" "test2"

观察到传递给osp_main 的参数计数为8。

还观察到传递给应用程序的最后一个参数没有被应用程序考虑。

日志:

11-14 20:14:34.241 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : int OspMain(int, char **)(24) > Application started, arg count : 8
11-14 20:14:34.281 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : int OspMain(int, char **)(30) > index : 0, argument : /opt/apps/Xbfv5mXrHt/bin/tizenSrvAppProject2
11-14 20:14:34.291 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : int OspMain(int, char **)(30) > index : 1, argument : `zaybxcwdveuftgsh`
11-14 20:14:34.291 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : int OspMain(int, char **)(30) > index : 2, argument : test1
11-14 20:14:34.291 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : int OspMain(int, char **)(30) > index : 3, argument : HAAAAAEEAAAGAAAAdGVzdDEABgAAAHRlc3QyAA==
11-14 20:14:34.291 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : int OspMain(int, char **)(30) > index : 4, argument : __AUL_STARTTIME__
11-14 20:14:34.291 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : int OspMain(int, char **)(30) > index : 5, argument : MwAAAAEEAAASAAAAX19BVUxfU1RBUlRUSU1FX18AEQAAADEzODQ0Mjc2NzQvOTE0MjQA
11-14 20:14:34.291 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : int OspMain(int, char **)(30) > index : 6, argument : __AUL_CALLER_PID__
11-14 20:14:34.291 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : int OspMain(int, char **)(30) > index : 7, argument : KAAAAAEEAAATAAAAX19BVUxfQ0FMTEVSX1BJRF9fAAUAAAAzOTI1AA==
11-14 20:14:34.681 : INFO / tizenSrvAppProject2 ( 3926 : 3926 ) : virtual bool tizenSrvAppProject2App::OnAppInitializing(Tizen::App::AppRegistry &)(50) > Timer construct status : [E_SUCCESS]

请给我一些指点:

参数如何传递给osp_main

如何利用应用程序传递给应用程序的参数?

提前致谢

【问题讨论】:

    标签: tizen tizen-native-app


    【解决方案1】:

    我已经使用以下代码从我的应用程序中启动了 tizen 中的电话应用程序

    HashMap extraData;
    extraData.Construct();
    String typeKey = L"http://tizen.org/appcontrol/data/call/type";
    String typeVal = L"voice";
    extraData.Add(&typeKey, &typeVal);
    
    AppControl* pAc = AppManager::FindAppControlN(L"tizen.phone",
    L"http://tizen.org/appcontrol/operation/dial");
    if (pAc)
    {
    pAc->Start(&number, null, &extraData, null);
    delete pAc;
    }
    

    而且你还需要添加权限,应用启动

    【讨论】:

      【解决方案2】:

      要接收启动参数,可以使用 AppControl 功能。

      Delivering Launch Arguments

      您可以在启动应用程序控件时提供数据,并且 称为应用程序控制必须正确处理这些数据。这 交付的数据可以使用 IAppControlProviderEventListener::OnAppControlRequestReceived() 方法。

      这里是pointer to AppControl

      调用部分,参考Arju的回答。

      【讨论】:

        猜你喜欢
        • 2015-01-04
        • 2023-03-04
        • 2012-12-24
        • 1970-01-01
        • 2020-04-29
        • 2021-01-10
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        相关资源
        最近更新 更多