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的几种用法全面总结

  • 2013年09月25日 10:01
  • 64KB
  • 下载

Intent用法举例

  • 2010年04月28日 19:24
  • 6KB
  • 下载

第一行代码系列第二章——更多隐式Intent用法(打开网页)

效果图 修改FirstActivity中按钮事件 Button button1 = (Button) findViewById(R.id.button_1); button1.se...

Intent的用法以及原理实现

显示网页 1. Uri uri = Uri.parse("http://google.com"); 2. Intent it = new Intent(Intent.ACT...

《Intent的一些用法(不断更新)》

intent  Intent用法实例  1.无参数Activity跳转  Java代码   Intent it = new Intent(Act...

[Android]新手入门:Intent的介绍和常见用法总结

Intent,英文直译为“目标、意图”等。 主要用于应用程序各项组件之间的交互与通讯,也可用于应用程序内部的Activity/Service之间的交互。 比如在应用程序中调用外部程序,直接把电话拨出去...

Android Intent用法大全

1. [代码]调用拨号程序      1 // 给移动客服10086拨打电话 2 Uri uri = Uri.p...

Intent 用法之Activity启动

FirstActivity.java package com.intent.test; import android.app.Activity; import android.app.Dialog...

Intent 常用的用法备忘

Intent     应该算是Android中特有的东西。你可以在Intent中指定程序 要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料 。都指定好后,只要调用...
  • dp1234
  • dp1234
  • 2011年03月09日 18:13
  • 427

Android之Intent全面解析及用法(一)

Intent对Android的核心和灵魂,是各组件之间的桥梁。四大组件分别为Activity 、Service、BroadcastReceiver、ContentProvider。 而这四种组件是独...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Intent的用法
举报原因:
原因补充:

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