'android remove data from getintent

I have an activity for handling deeplink which is a browsable activity

suppose user clicks a link on another app and my browsable activity handles that intent

and start the app, , then user minimise the app by pressing back button

class code for handling intent data

Uri link = getIntent().getData();

if user reopen app from running tasks getIntent() still have data

onDestroy method of browsable activity

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
setIntent(null);

}

setIntent(null) not working

so my question is how can i remove data from intent permanently



Solution 1:[1]

I am a little late on the answer here but I was dealing with a similar issue and found a solution. The reason you are still seeing data in the intent is because your app was originally started with an intent that contained data. That original intent is stored somewhere in Androids' ActivityManager and is immutable, to my understanding. When user reopens the app from "recent tasks", Android uses that original intent to recreate the application.

There is a workaround to this, however. In your apps onCreate() method, you can check to see if the Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY is set, which would allow your app to distinguish if it is being started from "recent tasks" or not, and therefore, you can avoid using the data contained in the intent.

Putting the following snippet in your onCreate() method would return true if the app is being opened from "recent tasks"

(getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0)

Solution 2:[2]

you have to remove data one by one key. i think you can't remove all data with one line.

if you want to remove specific key than you should use ==> getIntent().removeExtra("key"); or

getIntent().setAction("");

it will remove your data.

for more ==> Clearing intent

Solution 3:[3]

To remove the content it works best for me with the following lines of code.

//Clear DATA intent
intent.setData(null);
intent.replaceExtras(new Bundle());
intent.setFlags(0);

After that they can verify that the intent does not contain data

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 km1234
Solution 2 Community
Solution 3 Daniel Curasi