Android从浏览器返回到应用程序

时间:2012-11-22 11:52:27

标签: android browser

我可以选择在我的应用中启动浏览器并加载imdb网站。 我正在使用ActionView。

        Intent intent1 = new Intent(android.content.Intent.ACTION_VIEW,
                Uri.parse(website));

        try {
            activity.startActivity(intent1);
        } catch (Exception e) {
            Toast.makeText(activity, R.string.no_imdb, Toast.LENGTH_SHORT)
                    .show();
        }

点击后退按钮时出现问题。 当默认浏览器应用程序启动时,一切正常。 当Opera Mini应用程序启动时,当我点击后退按钮时,似乎我的应用程序收到两个后退动作,并完成我当前的活动。

如何防止这种情况?

3 个答案:

答案 0 :(得分:6)

尝试在新任务中启动意图:

intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

答案 1 :(得分:1)

您还可以使用Airbnb DeepLink lib

示例

在此示例中,我们注册SampleActivity以从深层链接(例如example://example.com/deepLink/123)中提取ID。我们用@DeepLink进行了注释,并指定了一个将由ID标识的参数。

@DeepLink("example://example.com/deepLink/{id}")
public class SampleActivity extends Activity {
  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    if (intent.getBooleanExtra(DeepLink.IS_DEEP_LINK, false)) {
      Bundle parameters = intent.getExtras();
      String idString = parameters.getString("id");
      // Do something with idString
    }
  }
}

答案 2 :(得分:0)

请将其添加到您需要返回的活动的android清单中

    <activity
        android:name="YourActivityName"
        android:launchMode="singleTask">
        <intent-filter>
            <action android:name="schemas.your_package.YourActivityName" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.ALTERNATIVE" />

        </intent-filter>
    </activity>

并将其添加到您的网页

<a href="intent:#Intent;action=schemas.your_package.YourActivityName;end">click to load app</a>

因为只有一个应用在您的手机上具有此操作名称(schemas.your_package.YourActivityName),所以网页直接返回到该应用