Frage

Ich habe mit dem folgenden seltsamen Verhalten von SingleTop-Aktivitäten zu kämpfen.

Ich habe in dieser Aktivität einige Absichtsfilter definiert:

<activity android:name="com.example.DashboardActivity"
        android:screenOrientation="landscape"
        android:launchMode="singleTop"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="video" />
            <category android:name="android.intent.category.BROWSABLE"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.EDIT" />
            <data android:scheme="survey" />
            <category android:name="android.intent.category.BROWSABLE"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.CALL" />
            <data android:scheme="call" />
            <category android:name="android.intent.category.BROWSABLE"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</activity>

Dieser Code sollte die Aktivität starten:

webView.setWebViewClient(new WebViewClient() 
    { 
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            try {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                startActivity(intent);

                return true;

            }   catch(ActivityNotFoundException e) {

                Log.e(TAG,"Could not load url"+url);
            }

            return super.shouldOverrideUrlLoading(view, url);    

        }

    });

Im onResume der DashboardActivity überprüfe ich die entsprechende Aktion:

public void onResume(){
    super.onResume();
    Fragment fragment = null;

    if (Intent.ACTION_VIEW.equals(intent.getAction())) {

        extras.putParcelable("uri", getIntent().getData());
        fragment = new VideoplayerFragment();

    } else {

        fragment = new DashboardFragment();

    }

    addOrReplaceFragment(fragment, extras);
}

Aber wenn ich diesen Code ausführe, erhalte ich immer das android.intent.action.MAIN Aktion.Wenn ich das entferne singleTop Im Startmodus startet es eine neue Aktivität, übergibt jedoch die korrekte Absicht.Ich muss also dieselbe Instanz der Aktivität verwenden singleTop, singleTask oder singleInstance muss den Job machen.Aber ich weiß nicht, was hier falsch läuft.HELFEN!

War es hilfreich?

Lösung

Intent.ACTION_VIEW.equals(intent.getAction())

Woher kommt diese Absicht?Um den neuen Intent zu erfassen, müssen Sie ihn verwendenonNewIntent().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top