Android上的Facebook深度链接

Android上的Facebook深度链接,android,facebook,android-intent,Android,Facebook,Android Intent,我试图在我的应用程序上实现Facebook的深度链接功能,遇到以下情况: 我有一个名为MainActivity的活动,声明如下: <activity android:name="com.mypackage.android.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" />

我试图在我的应用程序上实现Facebook的深度链接功能,遇到以下情况:

我有一个名为MainActivity的活动,声明如下:

    <activity
        android:name="com.mypackage.android.MainActivity">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
除以下情况外,一切都按计划进行:

  • 用户启动了我的应用程序
  • 创建的主活动
  • 创建第二个活动
  • 主要活动已完成
  • 应用程序通过设备主页按钮进入后台
  • 在Facebook的应用程序上点击深度链接
  • 在这种情况下,我的应用程序再次进入前台,但MainActivity的onCreate/onNewIntent 不要被调用,而是调用SecondaryActivity的onResume()并将其还原到它的 最后一个州

    注意:我已经在三星Nexus上用安卓4.2.1测试了这个问题,并得到了这个结果,不过在Galaxy S1上用安卓2.3.5测试时,它的工作原理和我最初的预期一样

    任何帮助都将不胜感激,
    谢谢。

    您需要在意向过滤器中获得更多信息:

    <intent-filter>
       <action android:name="android.intent.action.VIEW"></action>
       <category android:name="android.intent.category.DEFAULT"></category>
       <category android:name="android.intent.category.BROWSABLE"></category>
       <data android:host="www.yoursite.com" android:scheme="http"></data>
    </intent-filter>
    
    
    
    这将捕获指向您站点的链接(请确保更改URL),并将它们指向您在下面定义此意向筛选器的任何活动。

    请参阅

    您可以使用:

    android:clearTaskOnLaunch
    android:noHistory
    android:launchMode
    

    Facebook通过明确启动您的“MainActivity”(您在开发者页面中向他们提供的活动),从他们自己的应用程序启动您的应用程序

    这样,Android的默认行为是:如果应用程序已经运行,那么再次调用
    startActivity()
    不会从头开始新任务,而只会将已经运行的任务恢复到前台。

    但好消息是,您可以通过在main活动中添加
    android:launchMode=“singleTask”
    来更改此默认行为。它的定义是:

    系统创建一个新任务,并在新任务的根节点实例化活动。但是,如果活动的实例已存在于单独的任务中,系统将通过调用其onNewIntent()方法将意图路由到现有实例,而不是创建新实例。一次只能存在一个活动实例


    从这一点上,您可以始终响应开始意图,从这一点上,您可以始终导航回已经在后台的任务(如果存在)通过使用两个标志重新启动活动
    Intent.FLAG\u activity\u SINGLE\u TOP
    Intent.FLAG\u activity\u CLEAR\u TOP
    组合

    +1:我注意到ics+上的这个问题/问题/误解以及通知。嗨,Tom,你能帮我解决Facebook的这个深层链接问题吗?另请参阅和
    android:clearTaskOnLaunch
    android:noHistory
    android:launchMode