发送短信后,android活动自动移动到同一个活动

时间:2017-04-25 08:19:18

标签: android android-intent android-activity

我创建了两个活动页面。 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();

}

3 个答案:

答案 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();