2017-09-21 58 views
0

我的应用程序(游戏)有两个活动:显示徽标的启动器活动,初始化并且是我的应用程序的主要活动,以及执行3D渲染并由启动器活动启动的客户端活动。因此,当应用程序运行时,后台堆栈是:launcher |客户。点击链接时如何启动(当应用程序未运行时)或切换(当应用程序正在运行时)到Android应用程序

我想用一个链接是什么:

  1. ,如果应用程序尚未启动,点击链接应该先启动发射活动,然后发射活动启动客户端活动。最后,游戏运行在客户端活动中。

  2. 如果应用程序正在运行(在客户端活动中运行),则单击该链接应该切换到并通知应用程序该链接已被点击(无论是在启动器还是客户端都可以,在客户端更好),而不是启动另一个发射器活动。

我曾尝试:

<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> 

而且意图过滤器的工作原理当我点击链接:

  1. 我在发射胡亚蓉的声明增加了一个意图过滤器: myapp://,启动器活动启动。但问题是启动器活动是从浏览器的任务开始的。如果我已经有一个应用程序正在运行,那么将会有一个新的应用程序实例在浏览器后端堆栈中启动,而不是切换到已经运行的应用程序。

  2. 然后我尝试将属性android:launchMode="singleTask"添加到活动声明中。然后单击该链接将启动一个新任务,并启动该任务中的启动器活动。如果应用程序已经运行,正在运行的任务将切换到前台,这就是我所期望的。但问题是,应用程序任务的后退堆栈从“启动器”变为“启动器”,客户端活动消失。

我希望我的应用只有一个实例。如果应用程序未运行,则锁定链接应该启动应用程序,否则切换到应用程序而不会影响应用程序的当前运行状态。

我搜索了很多,但没有找到解决方案,请帮助我,谢谢。

回答

0

点击here为应用程序链接助手

+0

感谢您的链接。但我想我已经在链接助手中手动完成了所有这些步骤,就像在我的帖子中一样,但它并没有解决问题。 –

相关问题