【问题标题】:Android app opening wrong page after using uri scheme使用uri方案后Android应用打开错误页面
【发布时间】:2014-02-21 03:14:22
【问题描述】:

在 IOS 中,我有 2 个应用程序(应用程序 A 和应用程序 B)将执行不同的目标,但在 1 点,应用程序 A 将使用 uri 方案调用应用程序 B 以执行应用程序 A 没有的功能。

我想在 Android 上实现这个功能,目前已经开发了一个用于启动应用 B 调用的演示。现在我正在开发应用 B,它将从演示应用接收 uri 方案。

问题:

在应用 B 使用 uri 方案返回演示应用后,我关闭了演示应用。 当我回到主页并打开多任务重新打开App B(或通过图标打开App B)时,它重新打开的页面是用于演示应用程序的功能,但我想要的是App B的登录页面。

这是意图过滤器清单的一部分

<activity
        android:name="com.apps.MasterActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:clearTaskOnLaunch="true"
        android:windowSoftInputMode="adjustPan" >

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <data
             android:host="x-callback-url"
             android:scheme="myapp" />

        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

这是我调用演示应用程序的地方

Intent sendIntent = new Intent(Intent.ACTION_VIEW, responseUri);
sendIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(sendIntent);

【问题讨论】:

    标签: java android uri-scheme


    【解决方案1】:

    尝试将此添加到 AndroidManifest.xml 中的活动标签

    android:clearTaskOnLaunch="true"
    

    【讨论】:

    • 添加那行后还是一样
    【解决方案2】:

    显然我找到了一个解决方案,可以在返回演示应用程序后强制应用程序显示登录页面。通过将此代码放入 activity.java 文件中。

    @SuppressWarnings("deprecation")
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        System.runFinalizersOnExit(true);
        System.exit(0);
    }
    

    我知道它是我正在使用的一个已弃用的功能,但会在将来出现问题或找到更好的解决方案时尝试解决它。​​

    编辑: 找到了一个更好的解决方案,不需要使用我忘记将其设置为 false 的已弃用函数。

    当应用程序通过 Uri Scheme 连接时,我有一个设置为 true 的标志,我只需将其设置为 false 即可修复。这是我做的更改位置

    Intent sendIntent = new Intent(Intent.ACTION_VIEW, responseUri);
    sendIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    finish();
    startActivity(sendIntent);
    Util.isUriScheme = false;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-29
      • 2014-11-18
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      相关资源
      最近更新 更多