天天看点

用Intent启动Activity,并在Activity之间传递数据

一、

Intent类中有一个putExtra方法,该方法可以保存各种类型的值(String、boolean、int、Serializable等)

1、当startActivity方法启动Activity时,这些值也会一同随Intent对象传递到新启动的Activity。

2、在启动的Activity中可以通过getIntent().getExtra()获得一个Bundle对象,并通过该对象的相应的方法获得通过putExtra方法保存的值。

3、如果要使用putExtra方法保存复杂类型的值(比如类的对象实例),那么这些复杂类型的值必须是可序列化的,也就是复杂类型的值对应的类必须实现java.io.Serializable接口。

(使用putExtra方法传递一个实现java.io.Serializable接口的类的对象实例时,这个类中的所有成员也必须是可序列化的,否则系统会抛出异常。)

二、调用其他应用程序中的Activity(拨打电话、浏览网页、发E-mail等)

1、直接拨号(将Text中的号码直接拨打,显示正在拨打的界面)

     Intent callIntent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+etPhone.getText().toString()));

    startActivity(callIntent);

2、调用通话记录的界面

  Intent callButtonIntent=new Intent(Intent.ACTION_CALL_BUTTON);

 startActivity(callButtonIntent);

3、将电话号码传入拨号程序,但是并不拨打电话

Intent dialIntent=new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+etPhone.getText().toString()));

startActivity(dialIntent);

4、浏览网页

Intent webIntent=new Intent(Intent.ACTION_VIEW,Uri.parse("http:nokiaguy.blogjava.net"));

startActivity(webIntent);

5、向E-mail客户端传递E-mail地址

Intent intent=new Intent(Intent.ACTION_SENDTO,Uri.parse("mailto:[email protected]"));

startActivity(intent);

6、发送E-mail

Intent sendEmailIntent=new Intent(Intent.ACTION_SEND);

//发送的信息通过putExtra()方法指定

//发送的目标Email

sendEmailIntent.putExtra(Intent.EXTRA_EMAIL,new String[]{"[email protected]"});

//指定两个抄送的E-mail地址

sendEmailIntent.putExtra(Intent.EXTRA_CC,new String[]{"邮件的地址","邮件的地址"});

//指定E-mail标题

sendEmailIntent.putExtra(Intent.EXTRA_SUBJECT,"邮件的标题");

//指定邮件的内容

sendEmailIntent.putExtra(Intent.EXTRA_TEXT,"邮件的内容");

//指定邮件的内容是纯文本

sendEmailIntent.setType("text/plain");

//建立一个自定义选择器,并由用户选择使用的客户端发送消息

startActivity(Intent.createChooser(sendEmailIntent,"选择发送消息的客户端"));

7、选择相同类型的应用

Intent audioIntent=new Intent(Intent.ACTION_GET_CONTENT);

audioIntent.setType("audio/*");

startActivity(Intent.createChooser(audioIntent,"选择音频程序"));