Android突破三:Intent类

Intent类
Jiangdg_VIP
http://blog.csdn.net/u012637501
1.概述
    Intent直译是指意图,目的的意思,在Android中,它是一种用来执行一个操作的抽象描述,它可以用来启动一个Activity,实现Activity之间的跳转,还可以发送广播,启动服务。  Intent还可以作为连接每个Activity的纽带,在每个Activity之间传递数据。
    public class
     java.lang.Object 
   ↳ android.content.Intent
2.Intent数据结构 
(1)action属性:代表该Intent所要完成的一个执行动作,比如 ACTION_VIEW, ACTION_EDIT, ACTION_MAIN等
(2)data属性:通常用于向Action属性提供操作的数据,注意Data属性只接受一个Uri对象。
 博主笔记:action属性和data属性为Intent所传递信息的主要部分,action/data属性举例:
ACTION_VIEW content://contacts/people/1 -- 传递的信息: 显示 号码为1的人相关信息
ACTION_DIAL content://contacts/people/1 -- 传递的信息:给编号为1的人  电话
ACTION_VIEW tel:123 -- 传递的信息:将号码123 显示
ACTION_DIAL tel:123 --传递的信息:  拨打 号码123
ACTION_EDIT content://contacts/people/1 -- 传递的信息: 编辑编号为1的联系人
ACTION_VIEW content://contacts/people/ -- 传递的信息:列出显示所有联系人.如果希望在查看某个联系人,需要定义一个新的intent并且属性设置为{ ACTION_VIEW content://contacts/N } 传递到一个新的Activity。
总结:action属性、data属性是intent的主要属性。
(3)category属性:用于为Action增加额外的附加类别信息,CATEGORY常量默认为CATEGORY_DEFAULT,通常Action属性会与Category属性结合使用。
比如,CATEGORY_LAUNCHER表示Intent传递的Activity显示顶级程序列表中,即当启动程序时使这个界面第一个显示。
(4)type属性:显式指定Intent的数据类型(MIME)。一般Intent数据类型能够根据数据本身进行判定,但是假如设置了这个属性,会强制采用显式指定的类型。
(5)component属性:指定Intent的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
(6)extras属性:Intent的Extras属性为一个Bundle对象,用于在多个Action之间进行数据交换。是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。
博主笔记:在Intent类中,定义了许多action和category常量。但是,在安卓应用程序中,其有自己的定义方式(java字符串形式)去使用这些常量以保证它们的唯一性。比如ACTION_VIEW常量对应的字符串为 "android.intent.action.VIEW"。
 在AndroidManifest.xml 文件中:
  <intent-filter>
                 <action android:name="android.intent.action.INSERT" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
  </intent-filter>
3.构造函数:
                  Intent()
                Create an empty intent.

Intent( Intent o)
Copy constructor.

Intent( String action)
Create an intent with a given action.

Intent( String action,  Uri uri)
Create an intent with a  given action and for a given  data url.

Intent( Context packageContext,  Class<?> cls)
Create an intent for  a specific component.

Intent( String action,  Uri uri,  Context packageContext,  Class<?> cls)
Create an intent for a specific component with a specified action and data.
4.Intent的使用方法
(1)Intent可以从开发者自己的程序跳转到系统应用界面,比如点击一个按钮跳转到发短信的界面,其使用方式是通过uri的方式进行跳转,具体如下:  
        Intent it = new Intent(Intent.ACTION_VIEW); 
        it.putExtra("sms_body", "The SMS text");
        it.setType("vnd.android-dir/mms-sms");
        startActivity(it);
(2)启动一个Activity,实现Activity之间的跳转    
 <span style="white-space:pre">	</span>Intent it = new Intent(Main.this,Second.class); 
       startActivity(it);
(3)设置需要发送的信息,通过广播将此Intent发送出去 
       Intent it = new Intent(); 
        it.setAction("message");
        it.putExtra("message ", msg);
        sendBroadcast(it);
(4)启动/关闭一个服务
      Intent it = new Intent(Main.this,Second.class);
        startService(it);
        stopService(it);
5.方法
Intent
addCategory(String category)
Add a new category to the intent.
Intent
addFlags(int flags)
Add additional flags to the intent (or with existing flags value).
Object
clone()
Creates and returns a copy of this  Object.
Intent
cloneFilter()
Make a clone of only the parts of the Intent that are relevant for filter matching: the action, data, type, component, and categories.
static  Intent
createChooser(Intent target, CharSequence title)
Convenience function for  creating a ACTION_CHOOSER Intent.
int
describeContents()
Describe the kinds of special objects contained in this Parcelable's marshalled representation.
int
fillIn( Intent other, int flags)
Copy the contents of  other in to this object, but only where fields are not defined by this object.
boolean
filterEquals( Intent other)
Determine if two intents are the same for the purposes of intent resolution (filtering).
int
filterHashCode()
Generate hash code that matches semantics of filterEquals().
String
getAction()
Retrieve the general action to be performed, such as  ACTION_VIEW.
boolean[]
getBooleanArrayExtra( String name)
Retrieve extended data from the intent.
boolean
getBooleanExtra( String name, boolean defaultValue)
Retrieve extended data from the intent.
Bundle
getBundleExtra( String name)
Retrieve extended data from the intent.
byte[]
getByteArrayExtra( String name)
Retrieve extended data from the intent.
byte
getByteExtra( String name, byte defaultValue)
Retrieve extended data from the intent.
Set< String>
getCategories()
Return the set of all categories in the intent.
char[]
getCharArrayExtra( String name)
Retrieve extended data from the intent.
char
getCharExtra( String name, char defaultValue)
Retrieve extended data from the intent.
CharSequence[]
getCharSequenceArrayExtra( String name)
Retrieve extended data from the intent.
ArrayList< CharSequence>
getCharSequenceArrayListExtra( String name)
Retrieve extended data from the intent.
CharSequence
getCharSequenceExtra( String name)
Retrieve extended data from the intent.
ClipData
getClipData()
Return the  ClipData associated with this Intent.
ComponentName
getComponent()
Retrieve the concrete component associated with the intent.
Uri
getData()
Retrieve data this intent is operating on.
String
getDataString()
The same as  getData(), but returns the URI as an encoded String.
double[]
getDoubleArrayExtra( String name)
Retrieve extended data from the intent.
double
getDoubleExtra( String name, double defaultValue)
Retrieve extended data from the intent.
Bundle
getExtras()
Retrieves a map of extended data from the intent.
int
getFlags()
Retrieve any special flags associated with this intent.
float[]
getFloatArrayExtra( String name)
Retrieve extended data from the intent.
float
getFloatExtra( String name, float defaultValue)
Retrieve extended data from the intent.
int[]
getIntArrayExtra( String name)
Retrieve extended data from the intent.
int
getIntExtra( String name, int defaultValue)
Retrieve extended data from the intent.
ArrayList< Integer>
getIntegerArrayListExtra( String name)
Retrieve extended data from the intent.
static  Intent
getIntent( String uri)
This method was deprecated in API level 4. Use parseUri(String, int) instead.
static  Intent
getIntentOld( String uri)
long[]
getLongArrayExtra( String name)
Retrieve extended data from the intent.
long
getLongExtra( String name, long defaultValue)
Retrieve extended data from the intent.
String
getPackage()
Retrieve the application package name this Intent is limited to.
Parcelable[]
getParcelableArrayExtra( String name)
Retrieve extended data from the intent.
<T extends  Parcelable>  ArrayList<T>
getParcelableArrayListExtra( String name)
Retrieve extended data from the intent.
<T extends  Parcelable> T
getParcelableExtra( String name)
Retrieve extended data from the intent.
String
getScheme()
Return the scheme portion of the intent's data.
Intent
getSelector()
Return the specific selector associated with this Intent.
Serializable
getSerializableExtra( String name)
Retrieve extended data from the intent.
short[]
getShortArrayExtra( String name)
Retrieve extended data from the intent.
short
getShortExtra( String name, short defaultValue)
Retrieve extended data from the intent.
Rect
getSourceBounds()
Get the bounds of the sender of this intent, in screen coordinates.
String[]
getStringArrayExtra( String name)
Retrieve extended data from the intent.
ArrayList< String>
getStringArrayListExtra( String name)
Retrieve extended data from the intent.
String
getStringExtra( String name)
Retrieve extended data from the intent.
String
getType()
Retrieve any explicit MIME type included in the intent.
boolean
hasCategory( String category)
Check if a category exists in the intent.
boolean
hasExtra( String name)
Returns true if an extra value is associated with the given name.
boolean
hasFileDescriptors()
Returns true if the Intent's extras contain a parcelled file descriptor.
static  Intent
makeMainActivity( ComponentName mainActivity)
Create an intent to launch the main (root) activity of a task.
static  Intent
makeMainSelectorActivity( String selectorAction,  String selectorCategory)
Make an Intent for the main activity of an application, without specifying a specific activity to run but giving a selector to find the activity.
static  Intent
makeRestartActivityTask( ComponentName mainActivity)
Make an Intent that can be used to re-launch an application's task in its base state.
static  String
normalizeMimeType( String type)
Normalize a MIME data type.
static  Intent
parseIntent( Resources resources,  XmlPullParser parser,  AttributeSet attrs)
Parses(解析) the "intent" element (and its children) from XML and instantiates an Intent object.
static  Intent
parseUri( String uri, int flags)
Create an intent from a URI.
Intent
putCharSequenceArrayListExtra( String name,  ArrayList< CharSequence> value)
Add extended data to the intent.
Intent
putExtra( String name, double[] value)
Add extended data to the intent.
Intent
putExtra( String name, int value)
Add extended data to the intent.
Intent
putExtra( String name,  CharSequence value)
Add extended data to the intent.
Intent
putExtra( String name, char value)
Add extended data to the intent.
Intent
putExtra( String name,  Bundle value)
Add extended data to the intent.
Intent
putExtra( String name,  Parcelable[] value)
Add extended data to the intent.
Intent
putExtra( String name,  Serializable value)
Add extended data to the intent.
Intent
putExtra( String name, int[] value)
Add extended data to the intent.
Intent
putExtra( String name, float value)
Add extended data to the intent.
Intent
putExtra( String name, byte[] value)
Add extended data to the intent.
Intent
putExtra( String name, long[] value)
Add extended data to the intent.
Intent
putExtra( String name,  Parcelable value)
Add extended data to the intent.
Intent
putExtra( String name, float[] value)
Add extended data to the intent.
Intent
putExtra( String name, long value)
Add extended data to the intent.
Intent
putExtra( String name,  String[] value)
Add extended data to the intent.
Intent
putExtra( String name, boolean value)
Add extended data to the intent.
Intent
putExtra( String name, boolean[] value)
Add extended data to the intent.
Intent
putExtra( String name, short value)
Add extended data to the intent.
Intent
putExtra( String name, double value)
Add extended data to the intent.
Intent
putExtra( String name, short[] value)
Add extended data to the intent.
Intent
putExtra( String name,  String value)
Add extended data to the intent.
Intent
putExtra( String name, byte value)
Add extended data to the intent.
Intent
putExtra( String name, char[] value)
Add extended data to the intent.
Intent
putExtra( String name,  CharSequence[] value)
Add extended data to the intent.
Intent
putExtras( Intent src)
Copy all extras in 'src' in to this intent.
Intent
putExtras( Bundle extras)
Add a set of extended data to the intent.
Intent
putIntegerArrayListExtra( String name,  ArrayList< Integer> value)
Add extended data to the intent.
Intent
putParcelableArrayListExtra( String name,  ArrayList<? extends  Parcelable> value)
Add extended data to the intent.
Intent
putStringArrayListExtra( String name,  ArrayList< String> value)
Add extended data to the intent.
void
readFromParcel( Parcel in)
void
removeCategory( String category)
Remove a category from an intent.
void
removeExtra( String name)
Remove extended data from the intent.
Intent
replaceExtras( Bundle extras)
Completely replace the extras in the Intent with the given Bundle of extras.
Intent
replaceExtras( Intent src)
Completely replace the extras in the Intent with the extras in the given Intent.
ComponentName
resolveActivity( PackageManager pm)
Return the Activity component that should be used to handle this intent.
ActivityInfo
resolveActivityInfo( PackageManager pm, int flags)
Resolve the Intent into an  ActivityInfo describing the activity that should execute the intent.
String
resolveType( ContentResolver resolver)
Return the MIME data type of this intent.
String
resolveType( Context context)
Return the MIME data type of this intent.
String
resolveTypeIfNeeded( ContentResolver resolver)
Return the MIME data type of this intent, only if it will be needed for intent resolution.
Intent
setAction( String action)
Set the general action to be performed.
Intent
setClass( Context packageContext,  Class<?> cls)
Convenience for calling setComponent(ComponentName) with the name returned by a Class object.
Intent
setClassName( Context packageContext,  String className)
Convenience for calling setComponent(ComponentName) with an explicit class name.
Intent
setClassName( String packageName,  String className)
Convenience for calling  setComponent(ComponentName) with an explicit application package name and class name.
void
setClipData( ClipData clip)
Set a  ClipData associated with this Intent.
Intent
setComponent( ComponentName component)
(Usually optional) Explicitly set the component to handle the intent.
Intent
setData( Uri data)
Set the data this intent is operating on.
Intent
setDataAndNormalize( Uri data)
Normalize and set the data this intent is operating on.
Intent
setDataAndType( Uri data,  String type)
(Usually optional) Set the data for the intent along with an explicit MIME data type.
Intent
setDataAndTypeAndNormalize( Uri data,  String type)
(Usually optional) Normalize and set both the data Uri and an explicit MIME data type.
void
setExtrasClassLoader( ClassLoader loader)
Sets the ClassLoader that will be used when unmarshalling any Parcelable values from the extras of this Intent.
Intent
setFlags(int flags)
Set special flags controlling how this intent is handled.
Intent
setPackage( String packageName)
(Usually optional) Set an explicit application package name that limits the components this Intent will resolve to.
void
setSelector( Intent selector)
Set a selector for this Intent.
void
setSourceBounds( Rect r)
Set the bounds of the sender of this intent, in screen coordinates.
Intent
setType( String type)
Set an explicit MIME data type.
Intent
setTypeAndNormalize( String type)
Normalize and set an explicit MIME data type.
String
toString()
Returns a string containing a concise(简洁), human-readable (可读)description of this object.
String
toURI()
This method was deprecated in API level 4. Use toUri(int) instead.
String
toUri(int flags)
Convert this Intent into a String holding a URI representation of it.
void
writeToParcel( Parcel out, int flags)
Flatten this object in to a Parcel.
6.ACTION属性常量
(1)标准Activity Actions
    以下actions常量,用于Intent定义用来操作各种Activity,通常使用 startActivity(Intent)方法实现。
  • ACTION_MAIN           //传递返回到主Activity动作
  • ACTION_VIEW           //传递显示动作
  • ACTION_ATTACH_DATA
  • ACTION_EDIT           //传递编辑动作
  • ACTION_PICK        
  • ACTION_CHOOSER        //传递选择动作
  • ACTION_GET_CONTENT
  • ACTION_DIAL
  • ACTION_CALL
  • ACTION_SEND
  • ACTION_SENDTO
  • ACTION_ANSWER         //传递接听电话动作
  • ACTION_INSERT
  • ACTION_DELETE
  • ACTION_RUN
  • ACTION_SYNC
  • ACTION_PICK_ACTIVITY
  • ACTION_SEARCH
  • ACTION_WEB_SEARCH
  • ACTION_FACTORY_TEST
(2) 标准 Broadcast Actions
    以下"意图"的action属性常量,用于接收广播,通常使用 registerReceiver(BroadcastReceiver, IntentFilter)方法或者 在AndroidManifest.xml 文件中定义了<receiver>属性的Activity。
  • ACTION_TIME_TICK
  • ACTION_TIME_CHANGED
  • ACTION_TIMEZONE_CHANGED
  • ACTION_BOOT_COMPLETED
  • ACTION_PACKAGE_ADDED
  • ACTION_PACKAGE_CHANGED
  • ACTION_PACKAGE_REMOVED
  • ACTION_PACKAGE_RESTARTED
  • ACTION_PACKAGE_DATA_CLEARED
  • ACTION_UID_REMOVED
  • ACTION_BATTERY_CHANGED
  • ACTION_POWER_CONNECTED
  • ACTION_POWER_DISCONNECTED
  • ACTION_SHUTDOWN
7. 标准Categories常量
         为Action增加额外的附加类别信息,通常使用addCategory (String category)方法。
  • CATEGORY_DEFAULT
  • CATEGORY_BROWSABLE
  • CATEGORY_TAB
  • CATEGORY_ALTERNATIVE
  • CATEGORY_SELECTED_ALTERNATIVE
  • CATEGORY_LAUNCHER
  • CATEGORY_INFO
  • CATEGORY_HOME
  • CATEGORY_PREFERENCE
  • CATEGORY_TEST
  • CATEGORY_CAR_DOCK
  • CATEGORY_DESK_DOCK
  • CATEGORY_LE_DESK_DOCK
  • CATEGORY_HE_DESK_DOCK
  • CATEGORY_CAR_MODE
  • CATEGORY_APP_MARKET
8.标准Extra Data常量
    通过putExtra(String, Bundle)方法实现。
  • EXTRA_ALARM_COUNT
  • EXTRA_BCC
  • EXTRA_CC
  • EXTRA_CHANGED_COMPONENT_NAME
  • EXTRA_DATA_REMOVED
  • EXTRA_DOCK_STATE
  • EXTRA_DOCK_STATE_HE_DESK
  • EXTRA_DOCK_STATE_LE_DESK
  • EXTRA_DOCK_STATE_CAR
  • EXTRA_DOCK_STATE_DESK
  • EXTRA_DOCK_STATE_UNDOCKED
  • EXTRA_DONT_KILL_APP
  • EXTRA_EMAIL
  • EXTRA_INITIAL_INTENTS
  • EXTRA_INTENT
  • EXTRA_KEY_EVENT
  • EXTRA_ORIGINATING_URI
  • EXTRA_PHONE_NUMBER
  • EXTRA_REFERRER
  • EXTRA_REMOTE_INTENT_TOKEN
  • EXTRA_REPLACING
  • EXTRA_SHORTCUT_ICON
  • EXTRA_SHORTCUT_ICON_RESOURCE
  • EXTRA_SHORTCUT_INTENT
  • EXTRA_STREAM
  • EXTRA_SHORTCUT_NAME
  • EXTRA_SUBJECT
  • EXTRA_TEMPLATE
  • EXTRA_TEXT
  • EXTRA_TITLE
  • EXTRA_UID
9.Flags
    通过 setFlags(int) 和addFlags(int)设置intent的flags属性。
  • getFlags()
  • addFlags(int)
  • FLAG_GRANT_READ_URI_PERMISSION
  • FLAG_GRANT_WRITE_URI_PERMISSION
  • FLAG_GRANT_PERSISTABLE_URI_PERMISSION
  • FLAG_GRANT_PREFIX_URI_PERMISSION
  • FLAG_DEBUG_LOG_RESOLUTION
  • FLAG_FROM_BACKGROUND
  • FLAG_ACTIVITY_BROUGHT_TO_FRONT
  • FLAG_ACTIVITY_CLEAR_TASK
  • FLAG_ACTIVITY_CLEAR_TOP
  • FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
  • FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
  • FLAG_ACTIVITY_FORWARD_RESULT
  • FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
  • FLAG_ACTIVITY_MULTIPLE_TASK
  • FLAG_ACTIVITY_NEW_DOCUMENT
  • FLAG_ACTIVITY_NEW_TASK
  • FLAG_ACTIVITY_NO_ANIMATION
  • FLAG_ACTIVITY_NO_HISTORY
  • FLAG_ACTIVITY_NO_USER_ACTION
  • FLAG_ACTIVITY_PREVIOUS_IS_TOP
  • FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
  • FLAG_ACTIVITY_REORDER_TO_FRONT
  • FLAG_ACTIVITY_SINGLE_TOP
  • FLAG_ACTIVITY_TASK_ON_HOME
  • FLAG_RECEIVER_REGISTERED_ONLY

参考: http://developer.android.com/reference/android/net/Uri.html














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