Ho Activity
, che può essere lanciato direttamente dal browser, chiamando url.Come cancellare i dati di intenti in Attività dopo l'apertura dall'URL?
Codice attività:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri data = getIntent().getData();
Log.d(getClass().getName(), "onCreate data=" + data);
getIntent().replaceExtras(new Bundle());
getIntent().setAction("");
getIntent().setData(null);
getIntent().setFlags(0);
if (data != null && isValidUrl(data)) {
// open some special fragment
} else {
// open main fragment
}
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(MainActivity.class.getName(), "onDestroy");
}
//...
}
Applicazione codice manifesto:
...
<activity android:name=".MainActivity">
<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.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="example.com"
android:pathPrefix="/"
android:scheme="http"/>
</intent-filter>
</activity>
...
Questo codice funziona perfettamente. Quando apro un'applicazione dal browser usando collegamento (http://example.com/somepage.html
), ho questo output:
D/com.package.MainActivity: onCreate data=http://example.com/somepage.html
Ma se lascio l'applicazione (utilizzando il tasto indietro) e l'applicazione aperta ancora una volta, dal recente menù, ottengo lo stesso risultato:
D/com.package.MainActivity: onDestroy
D/com.package.MainActivity: onCreate data=http://example.com/somepage.html
voglio cancellare i dati intenti nel metodo onCreate
. O c'è modo di rilevare, quando l'applicazione viene lanciata dal menu recente?
UPD: Ho provato a fare questo:
@Override
protected void onDestroy() {
super.onDestroy();
getIntent().replaceExtras(new Bundle());
getIntent().setAction("");
getIntent().setData(null);
getIntent().setFlags(0);
Log.d(MainActivity.class.getName(), "onDestroy");
}
Ma non aiuta.
in '' onDestroy' fare setData (null); ' –
ho trovato getIntent() .removeExtra ("chiave"); – koutuk
Non aiuta neanche –