目前我在登錄系統的工作爲我的Android應用。使用結束()和意圖FLAGS
我已經實現了一個自定義的BroadcastReceiver一個OTP驗證過程。一旦otp被驗證,如下所示從BroadCastReceiver發送意圖。
Intent c=new Intent(context.getApplicationContext(), SignInActivity.class);
if (msgs[0].getOriginatingAddress().equals("+919920678579")) {
c.putExtra("code", "verified");
c.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(c);
} else {
Log.d("message ", "error, not verified!!");
}
現在這種將數據發送回簽到活動,我查了非空的意圖
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_in);
btn=(Button)findViewById(R.id.btn);
Intent i=getIntent();
if (i.getStringExtra("code")!=null){
if (i.getStringExtra("code").equals("verified")) {
Toast.makeText(SignInActivity.this, "verified!", Toast.LENGTH_LONG).show();
//SHOW SOME UI CHANGES
Intent intent=new Intent(SignInActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SmsManager smsManager = SmsManager.getDefault();
String phoneNumber = "+919920678579";
byte[] smsBody = "+919920678579".getBytes();
// DO NOT CHANGE THIS. IDK WHY ITS NOT WORKING IF REFERENCED FROM INT AND TYPE CAST TO SHORT!!
short port = 6734;
smsManager.sendDataMessage(phoneNumber, null, port, smsBody, null, null);
Log.d("sms ", "sent");
}
});
}
和我的調度/發射活動
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (ParseUser.getCurrentUser() != null) {
//TODO: check validity of finish(). Supposed to remove this from backstack
// Start an intent for the logged in activity
Log.d("User logged in as ", ParseUser.getCurrentUser().getUsername());
Intent mainIntent=(new Intent(this, MainActivity.class));
mainIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(mainIntent);
finish();
} else {
// Start and intent for the logged out activity
Log.d("User ", "sent to signUp");
Intent signIntent=(new Intent(this, SignInActivity.class));
signIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
signIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(signIntent);
finish();
}
}
流量是用戶點擊應用程序 - >調度活動(假設第一次用戶) - > SignInActivity - > Sms由broadcastreceiver發送和接收 - >在發送OTP後將信息發送到signInActivity - >用戶轉到Main活動頁面。在任何時候,我都希望用戶能夠按下按鈕並轉到上一個活動。我嘗試過使用Intent標誌並完成()。 BroadCastReceiver發送意圖到SignInActivity而不是MainActivity因爲我想顯示一個動畫/ TOAST,這就是爲什麼我有一個代碼檢查非null的意圖。但是我不能回到那些非常令人沮喪的活動上。有人可以幫我嗎?
大聲笑。那是我的一個非常非常愚蠢的錯誤。非常感謝。我是否需要同時使用BOTH finish()和flags?或者使用一個就足夠了 –
如果使用正確,你不需要顯式的finish()調用。 – unbekant