Android 在一个应用程序中使用相同的URL捕获意图

Android 在一个应用程序中使用相同的URL捕获意图,android,android-intent,Android,Android Intent,我正在制作一个android应用程序,它需要捕捉网站中共享网站的url。例如,您正在运行chrome,单击“共享”,选择您的应用程序,它将打开并管理该链接。我编写了以下代码: 舱单: <activity android:name=".LoginActivity" android:label="@string/title_activity_login"> <intent-filter android:label="Hello"> <

我正在制作一个android应用程序,它需要捕捉网站中共享网站的url。例如,您正在运行chrome,单击“共享”,选择您的应用程序,它将打开并管理该链接。我编写了以下代码:

舱单:

<activity
    android:name=".LoginActivity"
    android:label="@string/title_activity_login">
    <intent-filter android:label="Hello">
       <action android:name="android.intent.action.SEND" />
       <data android:mimeType="*/*" />
       <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
但出现了两个问题:

  • 意图只被抓住一次。当我分享网站时,它工作得很好,但当我回到浏览器并想再次分享(相同的url或其他东西)时,它的意图不会被发现
  • 若我手动启动应用程序,然后打开网站并共享一些链接,则会启动另一个应用程序实例(甚至不是应用程序,而是此特定活动)
  • 有没有建议如何解决这些问题?

    任何帮助都将不胜感激

    好吧,我已经解决了第一个问题,老实说,这是一个相当愚蠢的错误。我已经将带有getIntent的代码片段放在onCreate中,应该放在onResume中。无论如何,当我手动启动第一个应用程序时,仍然会创建新的应用程序实例:(

    编辑:推杆

          android:launchMode="singleTask">
    
    在清单中,将代码从onResume移动到

     @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
    
        catchIntent(intent);
    }
    
    已解决问题。您必须记住在onCreate中也进行另一次调用,以便可以触发第一次捕获。添加该选项很好

      intent.setFlags(intent.FLAG_ACTIVITY_SINGLE_TOP);
    

    还有。

    好的,我已经解决了第一个问题,老实说,这是一个相当愚蠢的错误。我已经将带有getIntent的代码片段放在onCreate中,应该放在onResume中。无论如何,当我手动启动第一个应用程序时,仍然会创建新的应用程序实例:(

    编辑:推杆

          android:launchMode="singleTask">
    
    在清单中,将代码从onResume移动到

     @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
    
        catchIntent(intent);
    }
    
    已解决问题。您必须记住在onCreate中也进行另一次调用,以便可以触发第一次捕获。添加该选项很好

      intent.setFlags(intent.FLAG_ACTIVITY_SINGLE_TOP);
    
    还有