我创建了两个活动页面。 MainActivity和Proceed Activity。我在MainActivity页面中从用户那里获取数据,并且通过意图我正在发送以继续活动。
继续页面我输入了电话号码然后我点击了发送按钮。它正在成功发送消息,但之后我正在创建启动活动以转移到mainactivity页面。它正在转向主要活动,但几秒钟后它会自动进入活动状态。
1.在mainActivity中我发送了像
这样的列表public void Proceed(View view){
if(planetsList.size()==0){
Toast.makeText(MainActivity.this, "Please Add Product", Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(MainActivity.this, Proceed.class);
intent.putExtra("list_product", planetsList);
Log.e("gjdgfl",Integer.toString(planetsList.size()));
startActivity(intent);
}
2.在继续页面编码是
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String no = mnumber.getText().toString();
Float netTotal = 0.1f;
ArrayList<Planet> myList = getIntent().getParcelableArrayListExtra("list_product");
Log.e("hai1",Integer.toString(myList.size()));
StringBuilder sb = new StringBuilder();
for (Planet temp : myList) {
sb.append(temp.getName()).append(" ").append(temp.getPerkg()).append("*").append(temp.getTotkg()).append("=").append(temp.getTotamt()).append("\n");
netTotal += temp.getTotamt();
}
sb.append("Total Amount is -"+netTotal);
System.out.println(sb.toString());
System.out.println(no);
String msg = sb.toString();
Intent intent=new Intent(getApplicationContext(),Proceed.class);
PendingIntent pi=PendingIntent.getActivity(getApplicationContext(), 0, intent,0);
SmsManager sms=SmsManager.getDefault();
sms.sendTextMessage(no, null, msg, pi,null);
Toast.makeText(getApplicationContext(), "Message Sent successfully!", Toast.LENGTH_LONG).show();
AlertDialog.Builder builder = new AlertDialog.Builder(Proceed.this);
builder.setTitle("Confirmation");
builder.setMessage("Message Sent Successfully")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent1 = new Intent(Proceed.this,MainActivity.class);
intent1.putExtra("exit_on_sent", true);
startActivity(intent1);
}
});
AlertDialog alert = builder.create();
alert.show();
}
答案 0 :(得分:2)
阅读本文:
如果您向外国应用程序提供Intent和该应用程序 发送/广播你给出的意图,他们将执行意图 拥有自己的权限。但如果你反而给外国人 应用您使用自己的权限创建的PendingIntent, 该应用程序将使用您的执行包含的Intent 申请许可。
问题在于:
您要将意图发送到Pend intent中的Proceed.class 因此,当消息完成时,它转到Proceed.class
private void rbgender_CheckedChanged(object sender, EventArgs e)
{
RadioButton clicked = (RadioButton)sender;
if(clicked.Checked)
genders = Convert.ToInt32(clicked.Tag);
}
更改此行:
Intent intent=new Intent(getApplicationContext(),Proceed.class);
PendingIntent pi=PendingIntent.getActivity(getApplicationContext(), 0, intent,0);
SmsManager sms=SmsManager.getDefault();
答案 1 :(得分:1)
待定意图
PendingIntent pi=PendingIntent.getActivity(getApplicationContext(), 0, intent,0);
将等待事件发生,并且在完成消息传递后,您将告诉它转到Proceed类(您在Intent中给出它)
Intent intent=new Intent(getApplicationContext(),Proceed.class);
完成消息传递后,将显示警告对话框,并且“确认”按钮将带您进入MainActivity。 这里的问题是PendingIntent仍处于活动状态,您的应用程序仍然会收到它,直到您取消它或确保您只能使用它一次。
1.通过
取消未决意图 Intent intent=new Intent(getApplicationContext(),Proceed.class);
PendingIntent pi=PendingIntent.getActivity(getApplicationContext(), 0, intent,0);
alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pi);
2.仅通过
使用一次待处理的意图PendingIntent pi=PendingIntent.getActivity(getApplicationContext(), 0,intent,PendingIntent.FLAG_ONE_SHOT);
答案 2 :(得分:0)
将PendingIntent
课程更改为MainActivity
,发送短信后会重定向到MainActivity。
Intent intent=new Intent(getApplicationContext(),MainActivity.class);
PendingIntent pi=PendingIntent.getActivity(getApplicationContext(), 0, intent,0);
SmsManager sms=SmsManager.getDefault();