我正在使用C++爲Android安裝cocos2d-x。現在我正在尋找一種方法,通過一個按鈕在遊戲中使用他們的軟件包名稱來打開另一個Android應用程序(喜歡YouTube,Google Play Store,...)。我尋覓了一圈,發現它可以在Java代碼來完成像這樣的東西:如何使用cocos2d-x啓動另一個Android應用程序?
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
if (launchIntent != null) {
startActivity(launchIntent);//null pointer check in case package name was not found
}
我的問題是:是否有可能在我的本地代碼打開另一個Android應用程序(.cpp文件)或我必須把它們放在Java方面(.java文件)?如果我必須在.java文件中完成,我應該在哪裏放置它?我總是在Visual Studio中使用.cpp文件,使用cmd進行編譯並在Android Studio上使用模擬器運行,我從來沒有在Android Studio中使用由cocos2d-x生成的.java文件,引擎只是讓一切準備就緒,所以我這裏有點困惑。
更新1:
阿布舍克雅利安人的意見的作品,但我的遊戲墜毀,機上的簡歷時,我在另一個應用程序來的。我試圖在打開其他應用程序之前執行一些操作,它們可能會導致崩潰,因爲如果我刪除這些操作並使其獨立運行,我可以毫無問題地運行它。
我的期望:按下按鈕=>暫停我的遊戲並在Android上打開You Tube =>按返回按鈕=>暫停您的Tube並恢復我的遊戲。
發生了什麼事:我可以打開你的管,但我的應用程序崩潰時,我按下後退按鈕。我從Android Studio中下面的錯誤代碼:
A/libc: Fatal signal 11 (SIGSEGV) at 0x0004fb18 (code=1), thread 1975 (Thread-55)
任何想法,我怎麼能解決這個問題?
我的代碼:
auto imageOpeningAction = CallFunc::create([&]() {
mOpeningImage->setEnabled(true);
mOpeningImage->setOpacity(255);
mOpeningImage->setPosition(menuItem->getPosition());
mOpeningImage->runAction(fullScale);
});
auto imageClosingAction = CallFunc::create([&]() {
mOpeningImage->runAction(reverseScale);
mOpeningImage->setOpacity(0);
mOpeningImage->setEnabled(false);
});
auto openAnotherApp = CallFunc::create([&]() { // Open YouTube app
HelloWorld::openApp(packageName);
});
runAction(Sequence::create(imageOpeningAction->clone(), DelayTime::create(0.5f), openAnotherApp->clone(), nullptr));
你的關注和幫助是非常讚賞。
嗨@Abhishek雅利安人,感謝您的回答,但是,我遇到了我的應用程序崩潰,當我在另一個應用程序,並按下回恢復我的問題遊戲。更多詳情請參閱我的文章中的** Update 1 **。 –