是否可以通过清除之前的整个历史记录在堆栈上启动隐式活动?
我正在创建一个应用程序,它具有从playsotre强制升级的概念。 因此我想在某个时刻打开游戏商店,同时我也想关闭我的应用程序基本上我想在打开游戏商店后清除我的应用程序的所有活动,但它没有用。
我的代码剪辑:
btnForceUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent goToMarket = new Intent(Intent.ACTION_VIEW)
.setData(Uri.parse("market://details?id=" + context.getPackageName()));
goToMarket.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); // clearing all activity task (Basically close the app)
mDialog.cancel();
context.startActivity(goToMarket);
}
});
我在intent对象中使用了以下标志,但它没有工作
goToMarket.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); // clearing all activity task (Basically close the app)
答案 0 :(得分:1)
你需要在下面开始谷歌游戏中进行一项活动
public class CloseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_settings);
final String appPackageName = getPackageName();
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
finish();
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
finish();
}
}
}
需要使用以下代码从课程开始此活动:
Intent mIntent = new Intent(CurrentActivity.this,CloseActivity.class);
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(mIntent);
finish();
答案 1 :(得分:1)
try {
final Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName()));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
finishAffinity();
startActivity(i); //
} catch (final android.content.ActivityNotFoundException ex) {
ex.printStackTrace();
}
或者,如果您希望它在Android的先前版本(< 15 API)中运行:
ActivityCompat.finishAffinity(this);