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:xxx@abc.com");  
Intent it = new Intent(Intent.ACTION_SENDTO, uri);  
startActivity(it);  
Intent it = new Intent(Intent.ACTION_SEND);    
it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");    
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={"me@abc.com"};      
String[] ccs={"you@abc.com"};      
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)
原文地址:https://www.cnblogs.com/niray/p/3815075.html