zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    .net core 发布iis 错误
    windows下grunt安装提示不成功
    个人随笔
    跟人备忘
    CSS中的高度和宽度
    编程语言的阴阳之争
    [数据模型] 数据表三种关联的概述
    MySQL server has gone away 问题的解决方法
    Java中PreparedStatement和Statement的用法区别
    Java 程序在执行时的内存划分区域
  • 原文地址:https://www.cnblogs.com/niray/p/3815075.html
Copyright © 2011-2022 走看看