Android 开发笔记——通过 Intent 传递类对象

intent的简单用法

 

案例一

传值:

Intent intent=new Intent();
intent.putExtra("extra", "这是页面一传来的值!");
intent.setClass(Test_for_intentActivity.this, actpage2.class);
startActivity(intent);

取值:

Intent intent=getIntent();
String StringE=intent.getStringExtra("extra");
TextView text2=(TextView)findViewById(R.id.textView2);
text2.setText(StringE);

 打开网页

  1. Uri uri = Uri.parse("http://www.google.com");
  2. Intent it  = new Intent(Intent.ACTION_VIEW,uri);
  3. startActivity(it); 
拨打电话
Uri uri =Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL,uri);  
startActivity(it);
 
6.调用发短信的程序
Intent it = newIntent(Intent.ACTION_VIEW);   
it.putExtra("sms_body", "TheSMS text");   
it.setType("vnd.android-dir/mms-sms");   
startActivity(it);
    1. //发送附件
    2. Intent it = new Intent(Intent.ACTION_SEND);  
    3. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");  
    4. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3");  
    5. sendIntent.setType("audio/mp3");  
    6. startActivity(Intent.createChooser(it, "Choose Email Client")); 

 

1.从google搜索内容  

Intent intent = new Intent();  

intent.setAction(Intent.ACTION_WEB_SEARCH);  

intent.putExtra(SearchManager.QUERY,"searchString")  

startActivity(intent);  

   

2.浏览网页  

Uri uri = Uri.parse("http://www.google.com");  

Intent it  = new Intent(Intent.ACTION_VIEW,uri);  

startActivity(it);  

   

3.显示地图  

Uri uri = Uri.parse("geo:38.899533,-77.036476");  

Intent it = new Intent(Intent.Action_VIEW,uri);  

startActivity(it);  

   

4.路径规划  

Uri uri = Uri.parse("http://maps.google.com/maps?f=dsaddr=startLat startLng&daddr=endLat endLng&hl=en");  

Intent it = new Intent(Intent.ACTION_VIEW,URI);  

startActivity(it);  

   

5.拨打电话  

Uri uri = Uri.parse("tel:xxxxxx");  

Intent it = new Intent(Intent.ACTION_DIAL, uri);   

startActivity(it);  

  

6.调用发短信的程序  

Intent it = new Intent(Intent.ACTION_VIEW);    

it.putExtra("sms_body", "The SMS text");    

it.setType("vnd.android-dir/mms-sms");    

startActivity(it);  

   

   

  

7.发送短信  

Uri uri = Uri.parse("smsto:0800000123");    

Intent it = new Intent(Intent.ACTION_SENDTO, uri);    

it.putExtra("sms_body", "The SMS text");    

startActivity(it);  

String body="this is sms demo";  

Intent mmsintent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", number, null));  

mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);  

mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true);  

mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true);  

startActivity(mmsintent);  

   

  

8.发送彩信  

Uri uri = Uri.parse("content://media/external/images/media/23");    

Intent it = new Intent(Intent.ACTION_SEND);    

it.putExtra("sms_body", "some text");    

it.putExtra(Intent.EXTRA_STREAM, uri);    

it.setType("image/png");    

startActivity(it);  

StringBuilder sb = new StringBuilder();  

sb.append("file://");  

sb.append(fd.getAbsoluteFile());  

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mmsto", number, null));  

// Below extra datas are all optional.  

intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject);  

intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);  

intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString());  

intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode);  

intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, exitOnSent);  

startActivity(intent);  

   

  

9.发送Email  

Uri uri = Uri.parse("mailto:[email protected]");  

Intent it = new Intent(Intent.ACTION_SENDTO, uri);  

startActivity(it);  

Intent it = new Intent(Intent.ACTION_SEND);    

it.putExtra(Intent.EXTRA_EMAIL, "[email protected]");    

it.putExtra(Intent.EXTRA_TEXT, "The email body text");    

it.setType("text/plain");    

startActivity(Intent.createChooser(it, "Choose Email Client"));   

Intent it=new Intent(Intent.ACTION_SEND);      

String[] tos={"[email protected]"};      

String[] ccs={"[email protected]"};      

it.putExtra(Intent.EXTRA_EMAIL, tos);      

it.putExtra(Intent.EXTRA_CC, ccs);      

it.putExtra(Intent.EXTRA_TEXT, "The email body text");      

it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");      

it.setType("message/rfc822");      

startActivity(Intent.createChooser(it, "Choose Email Client"));    

Intent it = new Intent(Intent.ACTION_SEND);    

it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");    

it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");    

sendIntent.setType("audio/mp3");    

startActivity(Intent.createChooser(it, "Choose Email Client"));  

   

   

10.播放多媒体   

Intent it = new Intent(Intent.ACTION_VIEW);  

Uri uri = Uri.parse("file:///sdcard/song.mp3");  

it.setDataAndType(uri, "audio/mp3");  

startActivity(it);  

Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");    

Intent it = new Intent(Intent.ACTION_VIEW, uri);    

startActivity(it);   

   

   

11.卸载apk  

Uri uri = Uri.fromParts("package", strPackageName, null);    

Intent it = new Intent(Intent.ACTION_DELETE, uri);    

startActivity(it);  

   

   

12.安装apk  

Uri installUri = Uri.fromParts("package", "xxx", null);  

returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri)

 

 

 

 

Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象。

要求被传递的对象必须实现上述2种接口中的一种才能通过Intent直接传递。

Intent中传递这2种对象的方法:

Bundle.putSerializable(Key,Object);  //实现Serializable接口的对象



Bundle.putParcelable(Key, Object); //实现Parcelable接口的对象

以下以最常用的Serializable方式为例 :

假设由登录界面(Login)跳转到主界面(MainActivity)传递的对象为登录的用户信息 User类

首先创建一个序列化类:User

复制代码
import java.io.Serializable;



public class User implements Serializable {

   private int ID;

    private String UserName;    

    private String PWD;    

    public final void setID(int value)

    {

        ID = value;

    }

    public final int getID()

    {

        return ID;

    }    

    public final void setUserName(String value)

    {

        UserName = value;

    }

    public final String getUserName()

    {

        return UserName;

    }  

    public final void setPWD(String value)

    {

        PWD = value;

    }



    public final String getPWD()

    {

        return PWD;

    }    

    

}
复制代码

登录窗体登录后传递内容

Intent intent = new Intent();

intent.setClass(Login.this, MainActivity.class);

Bundle bundle = new Bundle();

bundle.putSerializable("user", user);

intent.putExtras(bundle);

this.startActivity(intent);

接收端

Intent intent = this.getIntent(); 

user=(User)intent.getSerializableExtra("user");

 以上就可以实现对象的传递。

补充:

如果传递的是List<Object>,可以把list强转成Serializable类型,而且object类型也必须实现了Serializable接口

 Intent.putExtras(key, (Serializable)list)  

接收

(List<YourObject>)getIntent().getSerializable(key)

 

 

你可能感兴趣的:(Android 开发)