Android各种基本知识笔记-Intent
Intent介绍
翻译得不是很好,所以贴上原文,觉得写得不对可以给我指出错误,感谢!
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 startService(Intent) or bindService(Intent, ServiceConnection, int) to communicate with a background Service.
intent是一个即将执行的操作的抽象描述。它可以用
startActivity
函数启动一个Activity,broadcastIntent
函数可以将其发送到任何BroadcastReceiver组件中,而且startService(Intent)
函数和bindService(Intent,ServiceConnection,int)
函数也可以在后台服务进行通信。
An Intent provides a facility for performing late runtime binding between the code in different applications. Its most significant use is in the launching of activities, where it can be thought of as the glue between activities. It is basically a passive data structure holding an abstract description of an action to be performed.
Intent提供一个工具在不同应用程序之间执行代码的延迟间隔进行绑定。其最重要的用途是启动activities,它被称为activities之间的胶水。要执行的action的抽象描述基本上等同于一个被动的数据结构。
总的来说就是Intent的用途很广,可以在Activity、Broadcast、Service中起到很大作用
显式隐式Intent用法
- 显式Intent
直接调用
Intent(Context packageContext, Class<?> cls)
函数
startAty = (Button) findViewById(R.id.startAty);
startAty.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, AnotherAty.class);
startActivity(i);
}
});
下面是显示Intent的启动页面
- 隐式Intent
直接调用
Intent(String action)
函数
这是AndroidManifest.xml文件中另一个Activity的配置信息,其中android:exported="false"
表示的该Activity是不能被其他App启动,而默认参数是true
<activity android:name=".AnotherAty" android:exported="false">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="com.hanksenye.learnintent.intent.action.AnotherAty" />
</intent-filter>
</activity>
下面是MainActivity的按钮Intent配置
startAty.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent("com.hanksenye.learnintent.intent.action.AnotherAty");
startActivity(i);
}
});
下面是隐式Intent启动页面
Intent的构造函数
下面是官方文档的介绍
Intent()
Create an empty intent.
创建一个空的intentIntent(Intent o)
Copy constructor.
复制一个构造器Intent(String action)
Create an intent with a given action.
用一个已给的action创建一个intentIntent(String action, Uri uri)
Create an intent with a given action and for a given data url.
用一个已给的action创建一个intent来启动一个uriIntent(Context packageContext, Class<?> cls)
Create an intent for a specific component.
创建一个intent启动一个特殊的组件(例如别的Activity)Intent(String action, Uri uri, Context packageContext, Class<?> cls)
Create an intent for a specific component with a specified action and data.
创建一个intent启动一个带有特定action和data的特殊组件
下面是标准的Actions
Standard Activity Actions
- ACTION_MAIN
- 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
Standard Broadcast Actions
- 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_PACKAGES_SUSPENDED
- ACTION_PACKAGES_UNSUSPENDED
- ACTION_UID_REMOVED
- ACTION_BATTERY_CHANGED
- ACTION_POWER_CONNECTED
- ACTION_POWER_DISCONNECTED
- ACTION_SHUTDOWN
Standard Categories
- 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
Standard Extra Data
- 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