有些时候,我们希望在Symbian中启动其他的KJava应用,这里我们不提启动其他的Symbian程序,因为只要你知道Symbian程 序的UID,你就能把它启动起来,而Symbian的UID我们有许多方法可以知道,然而,对于KJava应用而言,就没这么容易了,所以我们通常采用其 他方式启动,要启动KJava程序我们必须知道其Caption属性,也就是写在Caption中的KJava应用的名字。
_LIT8(KMidletCaption,"忍者神龟");
TApaAppInfo appInfo;
RApaLsSession apaSession;
User::LeaveIfError(apaSession.Connect() );
CleanupClosePushL(apaSession);
User::LeaveIfError(apaSession.GetAllApps() );
RApaLsSession apaSession;
User::LeaveIfError(apaSession.Connect() );
CleanupClosePushL(apaSession);
User::LeaveIfError(apaSession.GetAllApps() );
while (apaSession.GetNextApp(appInfo) == KErrNone)
{
if( appInfo.iFullName.Right(8).Compare(_L(".fakeapp")) == 0)
{
TBuf<256> cap;
cap.Copy(appInfo.iCaption);
HBufC* pCap = NHelper::ConvGbk2UniL(KMidletCaption);//寻找对应的应用名称
if (pCap->CompareF(cap) == 0)//如果找到就启动
{
TThreadId threadId;
apaSession.StartDocument(_L(""), appInfo.iUid, threadId);
CleanupStack::PopAndDestroy(); // close apaSession
return true;
}
}
}
CleanupStack::PopAndDestroy(); // close apaSession
return false;
{
if( appInfo.iFullName.Right(8).Compare(_L(".fakeapp")) == 0)
{
TBuf<256> cap;
cap.Copy(appInfo.iCaption);
HBufC* pCap = NHelper::ConvGbk2UniL(KMidletCaption);//寻找对应的应用名称
if (pCap->CompareF(cap) == 0)//如果找到就启动
{
TThreadId threadId;
apaSession.StartDocument(_L(""), appInfo.iUid, threadId);
CleanupStack::PopAndDestroy(); // close apaSession
return true;
}
}
}
CleanupStack::PopAndDestroy(); // close apaSession
return false;
以上就是启动KJava应用的步骤,下面简单说几句启动Symbian应用的方法。
大家都注意到了apaSession.StartDocument()这个方法了,如果我们是在Symbian第二版中,我们需要在第二个参 数中给出UID,如果是在第三版本中,apaSession中有一个方法可以直接把应用名称(就是xxx.exe什么的)传入其中就可以启动了。