如何在点击链接

时间:2017-09-21 02:59:30

标签: android

我的应用程序(游戏)有两个活动:一个启动器活动,它显示徽标,初始化并是我的应用程序的主要活动,以及一个客户端活动,它执行3D渲染并由启动器活动启动。因此,当应用程序运行时,后栈是:启动器|客户端。

我想要的链接是:

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

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

  3. 我尝试过:

    1. 我在启动器活动的声明中添加了一个intent过滤器:

      <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://,启动启动器活动。但问题是启动器活动是在浏览器的任务中启动的。如果我已经有一个应用程序在运行,那么我的应用程序的新实例将在浏览器堆栈中启动,而不是切换到已经运行的应用程序。

    2. 然后我尝试将属性android:launchMode="singleTask"添加到活动声明中。然后单击该链接将启动一个新任务,并在该任务中启动Launcher活动。如果应用程序已经运行,则正在运行的任务将切换到前台,这就是我的期望。但问题是,app任务的后台堆栈是从#34; launcher |更改的客户机&#34;到了#34;启动器&#34;,客户端活动消失了。

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

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

1 个答案:

答案 0 :(得分:0)

点击here获取应用链接助手