Intent详解:
(1)一个Intent 包含了以下内容:
1.Component name :选择要开启的Activity
2.Action 启动Activity的响应事件
3.Data 要传递的数据
4.Category 包含一些附加信息
5.Extras 额外的信息,键值对
6.Flags
显式Intent:
(2)使用Intent发送消息
//设置要发送的number
Uri uri = Uri.parse("smsto://1368132740");
Intent intent = new Intent(Intent.ACTION_SENDTO,uri);
//设置要发送的信息
intent.putExtra("sms_body","The SMS text");
startActivity(intent);
(3)在Intent之间传递信息
MainActivity:
//启动Activity
Intent intent1 = new Intent();
//设置要传递的信息
intent1.putExtra("value","yanxi");
intent1.setClass(MainActivity.this,SecondActivity.class);
startActivity(intent1);
SecondActivity:
//得到刚才的Intent
Intent intent = getIntent();
//得到传入的值
String info = intent.getStringExtra("value");
隐式Intent:
不明确的指出 响应活动的Activity,而是根据action和category等信息交由系统进行分析去开启那个活动。
例:在MainActivity中开启SecondActivity:
开始,注册SecondActivity,设置intent-filter:
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.android.activity.ACTION_START"/>
//是一种默认的category,在调用startActivity方法时会自动的将category添加在Intent
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
MainActivity:
Intent intent = new Intent("com.android.activity.ACTION_START");
startActivity(intent);
一个Intent只能指定一个action,但是可以添加多个category。
打开浏览器:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
Intent返回数据给上一个活动:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button = (Button)findViewById(R.id.bt_test);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 1:
if(resultCode == RESULT_OK) {
String s = data.getStringExtra("value");
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
}
break;
default:
}
}
}
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Button button = (Button)findViewById(R.id.bt_test2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.putExtra("value","yanxi");
setResult(RESULT_OK,intent);
finish();
}
});
}