Intent的通信

Intent主要用于启动活动、服务和发送广播。它分为隐式和显示启动两种方式。在显示启动中,Intent常用于界面间的通信,包括启动新界面、发短信、打电话等操作。通信流程包括创建Intent、启动目标Activity、通过startActivityForResult接收结果、在目标Activity封装返回数据并销毁、最后在原始Activity接收并解析数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Intent一般可被用于启动活动,启动服务,以及发送广播等场景,由于服务,广播。intent的用法分为两种,隐式启动和显示启动。
1.启动一个界面语法:
Intent intent=new Intent(this,next.class)。this代表的是我们一个当前的Activity,next.class表示的是即将跳转的activity。
2.显示启动界面,发短信,打电话。

public class activity_phone extends Activity {
    private Button mBtnPhone;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_phone);
        textView = (TextView) findViewById(R.id.textView);
        mBtnPhone = (Button) findViewById(R.id.button_phone);
        mBtnPhone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:13893146092"));
                startActivity(intent);
            }
        });
        Button button = (Button) findViewById(R.id.button_phone_01);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:13893146092"));
                startActivity(intent);
            }
        });
        Button btn_sms = (Button) findViewById(R.id.button_sms);
        btn_sms.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(intent.ACTION_SENDTO);
                intent.setData(Uri.parse("smsto:10086"));
                intent.putExtra("haha", "你好");
                startActivity(intent);
            }
        });
        Button button02 = (Button) findViewById(R.id.button_web);
        button02.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.baidu.com"));
                startActivity(intent);
            }
        });
        Button button_hide = (Button) findViewById(R.id.button_hide);
        button_hide.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.start.mainActivity");
                intent.putExtra("message", textView.getText().toString());
                startActivity(intent);
            }
        });
    }
}

3.intent界面之间的通信。
第一步:先定义一个intent来通信(intent(this,next))
第二步:调用startActivityForResult(intent, 3308);来启动intent。后面的参数自己设置的端口号。
第三步:在第一二个界面接受intent,getIntent();
第四部:封装返回的数据,putExtra(key,values)遵循hashmap的格式。然后setResult(RESULT_OK, intent);最后销毁finish()活动。
第五步:第一个界面进行接收数据,重写onActivityResult()方法。判断,返回的code是否是发送的。然后在进行解析数据。

public class MainActivity extends Activity {
    private Intent intent;
    private Intent intentReceive;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.textView);
        intent = new Intent(MainActivity.this, Activity_next.class);
        Button btn = (Button) findViewById(R.id.button_go);
        intentReceive = getIntent();
        textView.setText(intentReceive.getStringExtra("message"));
        btn.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivityForResult(intent, 3308);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            String message = data.getStringExtra("message");
            textView.setText(message);
            Log.d("mainActivity", message);
        }
    }

第二个界面

public class Activity_next extends Activity {
    private String data;
    private TextView textView;
    Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_next);
        textView = (TextView) findViewById(R.id.editText);
        Button btn = (Button) findViewById(R.id.button_back);
        btn.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = getIntent();
                getIntent().putExtra("message", textView.getText().toString());
                setResult(RESULT_OK, intent);
                Activity_next.this.finish();
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值