Intent的用法

原创 2016年05月31日 21:22:31
Intent的用法:

    java.lang.Object 
    android.content.Intent 


    public class Intent
    extends Object
    implements Parcelable, Cloneable


An intent is an abstract description of an operation to 
be performed. It can be used with startActivity to launch
 an Activity,broadcastIntent to send it to any interested 
 BroadcastReceiver components, 
 and Context.startService(android.content.Intent) or
  Context.bindService(android.content.Intent, 
 android.content.ServiceConnection, int) to 
 communicate with a background Service. 



 Intent 作用:意图,传输,要做的事

 构造方法:

 1 public Intent()
 Create an empty intent.

 2 public Intent(String action)

 Create an intent with a given action.
 action - The Intent action, such as ACTION_VIEW.

 for example the system VIEW action is android.intent.action.VIEW; 
 an application's custom action would be something like 
 com.google.app.myapp.CUSTOM_ACTION.

 3 public Intent(String action, Uri uri)

 action - The Intent action, such as ACTION_VIEW.
 uri - The Intent data URI.

  例如:
Uri uri = Uri.parse(“http://www.google.com”);  
Intent it = new Intent(Intent.ACTION_VIEW,uri);  
startActivity(it);


 发送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”));  



 4 public Intent(Context packageContext,
      Class<?> cls)

 例如 
 Intent intent = new Intent(MainActivity.this,SecondActivity.class);
 startActivtiy(intent);

packageContext - A Context of the application package implementing this class.
cls - The component class that is to be used for the intent.

5 public Intent(String action,
      Uri uri,
      Context packageContext,
      Class<?> cls)

综合了上面1234


常用的方法:
parseUri
public static Intent parseUri(String uri,
              int flags)
                       throws URISyntaxException

Create an intent from a URI
uri - The URI to turn into an Intent.
flags - Additional processing flags. Either 0 or URI_INTENT_SCHEME. 


setDataAndType
public Intent setDataAndType(Uri data,
                    String type)
data - The Uri of the data this intent is now targeting.
type - The MIME type of the data being handled by this intent. 

例如:
Uri uri = Uri.parse(“file:///sdcard/song.mp3″);  
Intent it = new Intent(Intent.ACTION_VIEW, uri);  

it.setDataAndType(uri, “audio/mp3″);  
context.startActivity(it);  


putExtra
public Intent putExtra(String name,
              CharSequence value)

name - The name of the extra data, with package prefix.//包名加前缀Intent.EXTRA_TEXT
value - The CharSequence data value. 

例如:it.putExtra(Intent.EXTRA_TEXT, “The email body text”);  

或者其他 的也行


Intent传递对象:
因为Intent传递的类型有限,所以下面的两种方法可以实现自定义传递一个对象

第一种是对象实现Serializable:

public class Person implements Serializable{
    .....
}

Person person = new Person("Tom",20);

Intent intent = new Intent(F.this,S.class);
intent.putExtra("person_data",person);
startActivity(intent);

第二种对象实现Parcelable
public class Person implements Parcelable{
    .....

    @Override
    public int describeCotents(){
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest,int flags){
        dest.writeString(name);//写出Name
        dest.writeInt(age);
    }


public static final Parcelable.Creator<Person> CREATOR =

new Parcelable.Creator<Person>(){
    @Override
    public Person createFromParcel(Parcel source){
        Person person = new Person();
        person.name = source.readString();//读取name,注意和上面的顺序要一致
        person.age = source.readInt();

        return person;
    }

    @Override
    public Person[] new Array(int size){
        return new Person[size];
    }
};
}

用法和上面的Serializable一样

读取一个Person对象:
Person person = (Person)getIntent().getParcelableEXtra("person_data");

Person person = (Person)getIntent().getSerializaleEXtra("person_data");

以后再补充 @_@

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android中Intent的几种使用方法

Intent不仅用于应用程序间的交互,大部分时候还是用于应用间Activity/Service之间的交互,例如启动一个新的Activity等。本文简单总结一些关于Intent的使用方法。 1、启动一个...
  • u013921245
  • u013921245
  • 2015年10月09日 20:51
  • 2777

Intent详解(四):使用隐式Intent

《Intent详解(一):显式Intent》 《Intent详解(二):隐式Intent》 《Intent详解(三):Intent的Flags》 《Intent详解(四):使用隐式Intent》...
  • Todo_
  • Todo_
  • 2016年02月25日 15:31
  • 751

Android: Intent详细使用方法

Android: Intent的使用Intent基本介绍创建隐式Intent调用系统的拨号Uri number = Uri.parse("tel:5551234"); Intent callInten...
  • u013647382
  • u013647382
  • 2016年06月12日 22:11
  • 648

安卓Intent用法

Intent可以分为两种,一种是显示Intent,另一种是 隐士Intent。 Intent在安卓开发中非常重要,是安卓程序中各个组件之间进行交互的一种方式,它不仅可以指明当前组件想要执行的动作,还...
  • lirunhui6
  • lirunhui6
  • 2018年01月16日 10:41
  • 16

android中部分Intent用法实例

下面是转载来的其他的一些Intent用法实例(转自javaeye) 显示网页  Uri uri = Uri.parse("http://google.com/");  Intent it = new...
  • gao_chun
  • gao_chun
  • 2014年09月09日 16:26
  • 4647

Android Studio Intent使用(显式、隐式) 第一行代码

使用Intent能够使程序在不同活动中跳转,意及能够使用不同界面。Intent用法分为显示和隐式 Intent概念:Intent是Android程序中各组件之间进行交互的一种重要方式,不仅可以指明当...
  • u012005313
  • u012005313
  • 2015年07月22日 17:23
  • 4684

第一行代码:更多隐式Intent的用法

更多隐式Intent的用法
  • cckevincyh
  • cckevincyh
  • 2016年08月21日 16:12
  • 344

Intent 隐式用法

IntentHelper.java publicclass IntentHelper {  public static Intent getIntent(String uri){ Intent ...
  • baggio1006
  • baggio1006
  • 2012年03月06日 10:23
  • 2828

Intent详细介绍及使用实例

一个Android程序通常有多个组件构成。如果要从一个Activity切换到另一个,必须用Intent来激活。实际上,Activity,Service和Broadcast Receiver这三种核心组...
  • lxj1137800599
  • lxj1137800599
  • 2015年12月17日 19:19
  • 500

BroadCastReceiver的基本使用方法

今天读了《第一行代码》并复习了一下广播机制,在这里做一个总结。 广播从类型上可以分为有序广播和标准广播两大类,从方法上分为静态注册的广播和动态注册的广播。在Android中,广播是跨进程的,因此在进...
  • u011521890
  • u011521890
  • 2016年07月05日 18:17
  • 1209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Intent的用法
举报原因:
原因补充:

(最多只允许输入30个字)