Intent隐式用法
利用intent打开网页
·android:scheme 用于指定数据的协议部分
·android:host 用于指定数据的主机名部分
·android:port 用于指定数据的端口部分
·android:path 用于指定主机名和端口之后的部分,一般紧随在主机名之后
·android:mineType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定
掌握putExtra()以及获取方法
以传递String为例
利用intent返回数据给上一个活动
掌握startActivityForResult(),setResult(),onActivityResult(),onBackPressed()
利用intent打开网页
掌握setData
button.setOnClickListener(new OnClickLisenter(){
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));//Uri.parse()通常都是以字符串的形式传入,进行解析
startActivity(intent);
});
此外,还可以在<intent-filter>标签中配置一个<data>标签,用于更精确的指定当前活动能够相应什么类型的数据,<data>标签主要可以配置一下内容
·android:scheme 用于指定数据的协议部分
·android:host 用于指定数据的主机名部分
·android:port 用于指定数据的端口部分
·android:path 用于指定主机名和端口之后的部分,一般紧随在主机名之后
·android:mineType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定
利用intent打开电话簿
button.setOnClickListener(new OnClickLisenter(){
Intent intent=new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));//Uri.parse()通常都是以字符串的形式传入,进行解析
startActivity(intent);
});
利用intent传递数据
掌握putExtra()以及获取方法
以传递String为例
FirstActivity.java:
button.setOnClickListener(new OnClickLisenter(){
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("extra_data","Hello SecondActivity");//将"Hello SecondActivity"字符串传给extra_data
startActivity(intent);
});
SecondActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
Button button2=(Button)findViewById(R.id.button_2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=getIntent();//获取到用于启动SecondActivity的Intent
String data=intent.getStringExtra("extra_data");//获取extra_data的数据,赋给data
Log.d("SecondActivity",data);//打印data里的内容
}
});
}
除了String,还能传递int,boolea等,对应的获取方法getIntExtra(),getBooleanExtra()
利用intent返回数据给上一个活动
掌握startActivityForResult(),setResult(),onActivityResult(),onBackPressed()
FirstActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button1=(Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode){
case 1:
if(resultCode==RESULT_OK){//返回值==RESULT_OK输出returndata的内容
String retrunedData=data.getStringExtra("data_return");
Log.d("FirstActivity",retrunedData);
}
break;
default:
}
}
SecondActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
Button button2=(Button)findViewById(R.id.button_2);
button2.setOnClickListener(new View.OnClickListener() {//点击摧毁当前活动,将Hello FirstActivity返回到上一个活动
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);
finish();
}
});
}
@Override
public void onBackPressed() {//用户用back摧毁当前活动时,将Hello FirstActivity返回到上一个活动
Intent intent=new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);
finish();
}