I have Activity
, which can be launched directly from browser, calling url.
Activity code:
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");
}
//...
}
Application manifest code:
...
<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>
...
This code works perfectly. When I open application from browser using link (http://example.com/somepage.html
), I have this output:
D/com.package.MainActivity: onCreate data=http://example.com/somepage.html
But if I leave the application (using back button) and open application again, from recent menu, I get the same result:
D/com.package.MainActivity: onDestroy
D/com.package.MainActivity: onCreate data=http://example.com/somepage.html
I want to clear intent data in method onCreate
. Or is there way to detect, when application is launched from recent menu?
UPD: I tried to do this:
@Override
protected void onDestroy() {
super.onDestroy();
getIntent().replaceExtras(new Bundle());
getIntent().setAction("");
getIntent().setData(null);
getIntent().setFlags(0);
Log.d(MainActivity.class.getName(), "onDestroy");
}
But it does not help.