在Android的Facebook深度链接(Facebook deep linking on And

2019-09-01 01:22发布

我想实现我的应用程序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上的开发者网站的设置也宣告。

一旦链接点击Facebook的应用进行了,我应该通过我活动的onCreate方法来处理这个事件。 下面的代码处理该事件:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Uri target = getIntent().getData();

        if (target != null){
          // got here via Facebook deep link
          // once I'm done parsing the URI and deciding
          // which part of my app I should point the client to
          // I fire an intent for a new activity and
          // call finish() the current activity (MainActivity)
        }else{
          // activity was created in a normal fashion
        }
    }

所有按照除以下情形计划进行:

  1. 用户推出了我的应用程序
  2. MainActivity创建
  3. SecondaryActivity创建
  4. MainActivity完成
  5. 应用程序通过设备home键切换到后台
  6. 深层链接被点击Facebook上的应用

在这种情况下,我的应用程序再次进入前景,但MainActivity的onCreate / onNewIntent不会被调用,而不是SecondaryActivity的的onResume()被调用,并恢复到它的最后状态。

注:当银河S1测试了Android 2.3.5,它的工作,因为我最初的预期我测试过这个问题上的三星Nexus采用Android 4.2.1,并得到了这个结果,虽然。

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

Answer 1:

Facebook正在通​​过启动从自己的应用程序您的应用程序显式地启动你的“MainActivity”(你在开发者页面提供他们一个)。

由- Android的默认行为是:如果应用程序已经运行,然后再打电话给startActivity()不会从头开始新的任务,但只恢复到前台已经运行任务。

但好消息是,你可以通过添加到您的MainActivity更改此默认行为android:launchMode="singleTask" 。 它的定义是:

系统会创建一个新的任务和新任务的根实例化的活动。 但是,如果活动的实例已经存在于一个单独的任务,该系统通过航线与其onNewIntent()方法的调用,而不是创建一个新的实例的意图,现有的实例。 只有活动的一个实例可以同时存在。

从这个角度,你可以随时响应启动意图,从这一点你可以随时通过两个标志重新启动活动导航回已经在后台(如果存在)的任务Intent.FLAG_ACTIVITY_SINGLE_TOP && Intent.FLAG_ACTIVITY_CLEAR_TOP组合



Answer 2:

见http://developer.android.com/guide/topics/manifest/activity-element.html

你可以玩:

android:clearTaskOnLaunch
android:noHistory
android:launchMode


Answer 3:

你需要有更多的信息,你的意图过滤器:

<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),并将它们发送到任何活动定义下这个意图过滤器。



文章来源: Facebook deep linking on Android