后台还原的Android活动不正确

时间:2015-12-01 03:22:54

标签: android

我的应用程序中有以下流程:

SignInActivity (MAIN) -> Android Browser (for OAuth) -> OAuth Activity ->
    -> PinCode Activity -> SignInActivity -> AccountActivity

标记所有活动的NoHistory = True

在我的测试中,我看到当我在AccountActivity并且我将应用程序发送到后台时(通过单击主页按钮),应用程序将使用OAuth Activity恢复。这非常令人不安,因为OAuth流在触发PinCode流后立即完成。像:

try
{
    Server.FinalOAuthChallenge(...) // blocking API
    ...
    GoToPinCodeSetupActivity();
    Intent startPinFlow = new Intent(this, typeof(PinCodeActivity));
    startPinFlow.PutExtra(SKConstants.SKPinCodeIntentArgumentIsStartKey, true);
    startPinFlow.PutExtra(SKConstants.SKPinCodeIntentArgumentTypeKey, (int)PinCodeActivity.Type.Set);
    StartActivity(startPinFlow);
    Finish();
}

每次应用程序从后台启动时,它实际上都会启动此OAuth Activity。它也很奇怪,因为我已经将NoHistory标志设置为true。

以下是我创建浏览器意图的方法:

Intent oauthIntent = new Intent(Intent.ActionView, uri);
oauthIntent.AddFlags(ActivityFlags.ClearTask);
oauthIntent.AddFlags(ActivityFlags.NewTask);
activity.StartActivity(oauthIntent);

这是我的AndroidManifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.alpha.romeo" android:versionName="1.1.3" android:versionCode="9">
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="19" />
    <application android:name="AlphaRomeo.SKApplication" android:label="AlphaRomeo" android:icon="@drawable/icon">
        <activity android:label="@string/appName" android:name="AlphaRomeo.SignInActivity" android:screenOrientation="portrait" android:configChanges="orientation" android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="http" />
                <data android:host="*" />
                <data android:pathPattern=".*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ALPHAROMEO" />
                <data android:mimeType="*/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="https" />
                <data android:host="*" />
                <data android:pathPattern=".*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ALPHAROMEO" />
                <data android:mimeType="*/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="file" />
                <data android:host="*" />
                <data android:pathPattern=".*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ALPHAROMEO" />
                <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ALPHAROMEO" />
                <data android:mimeType="*/*" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="content" />
                <data android:mimeType="application/octet-stream" />
            </intent-filter>
        </activity>
        <activity android:name="AlphaRomeo.OAuthActivity" android:label="@string/appName">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="com.alpha.romeo" android:host="oauth" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
</manifest>

0 个答案:

没有答案