Intent的通信

来源:互联网 发布:unity3d工程师工资 编辑:程序博客网 时间:2024/06/14 02:16

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();            }        });    }}
0 0
原创粉丝点击