我的应用程序(游戏)有两个活动:显示徽标的启动器活动,初始化并且是我的应用程序的主要活动,以及执行3D渲染并由启动器活动启动的客户端活动。因此,当应用程序运行时,后台堆栈是:launcher |客户。点击链接时如何启动(当应用程序未运行时)或切换(当应用程序正在运行时)到Android应用程序
我想用一个链接是什么:
,如果应用程序尚未启动,点击链接应该先启动发射活动,然后发射活动启动客户端活动。最后,游戏运行在客户端活动中。
如果应用程序正在运行(在客户端活动中运行),则单击该链接应该切换到并通知应用程序该链接已被点击(无论是在启动器还是客户端都可以,在客户端更好),而不是启动另一个发射器活动。
我曾尝试:
<activity android:name=".Launcher" android:label="TestApp">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="myapp" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<activity android:name=".Client" android:label="TestApp">
</activity>
而且意图过滤器的工作原理当我点击链接:
我在发射胡亚蓉的声明增加了一个意图过滤器: myapp://,启动器活动启动。但问题是启动器活动是从浏览器的任务开始的。如果我已经有一个应用程序正在运行,那么将会有一个新的应用程序实例在浏览器后端堆栈中启动,而不是切换到已经运行的应用程序。
然后我尝试将属性
android:launchMode="singleTask"
添加到活动声明中。然后单击该链接将启动一个新任务,并启动该任务中的启动器活动。如果应用程序已经运行,正在运行的任务将切换到前台,这就是我所期望的。但问题是,应用程序任务的后退堆栈从“启动器”变为“启动器”,客户端活动消失。
我希望我的应用只有一个实例。如果应用程序未运行,则锁定链接应该启动应用程序,否则切换到应用程序而不会影响应用程序的当前运行状态。
我搜索了很多,但没有找到解决方案,请帮助我,谢谢。
感谢您的链接。但我想我已经在链接助手中手动完成了所有这些步骤,就像在我的帖子中一样,但它并没有解决问题。 –