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();
}
});
}
}