我有Activity
,可以直接從瀏覽器啓動,調用url。如何從URL打開後清除活動中的意圖數據?
活動代碼:
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");
}
//...
}
應用程序清單代碼:
...
<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>
...
此代碼的工作非常完美。當我使用環節(http://example.com/somepage.html
)從瀏覽器中打開應用程序,我有這樣的輸出:
D/com.package.MainActivity: onCreate data=http://example.com/somepage.html
但是如果我離開這個應用程序(使用後退按鈕)和開放式應用程序再次,從最近的菜單,我得到了相同的結果:
D/com.package.MainActivity: onDestroy
D/com.package.MainActivity: onCreate data=http://example.com/somepage.html
我想清除方法onCreate
中的意圖數據。還是有辦法檢測,當應用程序從最近的菜單啓動?
UPD: 我試着這樣做:
@Override
protected void onDestroy() {
super.onDestroy();
getIntent().replaceExtras(new Bundle());
getIntent().setAction("");
getIntent().setData(null);
getIntent().setFlags(0);
Log.d(MainActivity.class.getName(), "onDestroy");
}
但它並不能幫助。
在'onDestroy'做'使用setData(NULL);' –
我發現getIntent ().removeExtra( 「鑰匙」); – koutuk
它沒有幫助 –