安卓的入門基礎就是四大應用組件。分別是:Activity(活動),Service(服務),Content Provider(內容提供者),Broadcast Receiver(廣播接收者)。一般在面試或者筆試的過程中,這些都是最基本的問題。一個應用里面會有很多個Activity,這個不同的Activity 分別具備不同的功能,指引用戶進行下一步的操作。
1.Activity
1.1 Activity的介紹
Activity 是用戶與屏幕進行交互執(zhí)行電話,拍照,啟動應用等操作。簡單來說就是用戶在操作的過程中,看到的畫面。
1.2 Activity的跳轉和銷毀
每個Activity 都可以啟動另一個Activity ,但是系統(tǒng)會自動在你啟動另一個Activity的時候,將原有的Activity保存在棧中。棧遵循“先進后出,后進先出”的原則。當新的Activity啟動的時候,舊的Activity會的推送到棧上,獲取焦點。用戶點擊返回的時候,銷毀當前的Activity,回到舊的Activity。還有一種情況,就是當你從A Activity跳轉B Activity 的時候,要求你返回的時候不能返回到 A Activity ,而是返回到 A Activity 的再上一個Activity。系統(tǒng)這時候會提供 finish()方法,結束當前Activity。如圖所示。
1.3 Activity 的創(chuàng)建和生命周期
在創(chuàng)建Activity的時候,你就必須要了解Activity 的生命周期,了解一個Activity從創(chuàng)建,到結束的過程。簡記: CSRPSD(創(chuàng)始人盤絲洞),記不住自己打自己一巴掌
1.4 Activity 的聲明
在上一節(jié)中,我們說到 AndroidManifest.xml 文件中,我們會指定其中的某一個Activity為“ 主Activity” ,也就是啟動該App的時候,程序的入口。
<activity android:name=".MainActivity">
?? <intent-filter>
?? ?? <action android:name="android.intent.action.MAIN" />
?? ?? <category android:name="android.intent.category.LAUNCHER" />
?? </intent-filter>
</activity>
<activity>這個標簽必須自<application>這個標簽中。 <intent-filter>標簽是過濾器。<action>是聲明標簽 android:name="android.intent.action.MAIN" ,這就聲明了 .MainActivity是主Activity,也就是程序的入口。<category>元素指定此 Activity 應列入系統(tǒng)的應用啟動器內(以便用戶啟動該 Activity)。
只有一個Activity 具備上述的操作和 "LAUNCHER"這個類別。否則會報錯
1.5 Activity 的啟動
假如是 MainActivity 跳轉到SingleActivity
1.5.1 顯式啟動
方式一:
Intent intent = new Intent(MainActivity.this, SingleActivity .class);
startActivity(intent);
方式二:
Component component = new Component(this,SingleActivity .class);
Intent intent = new Intent();
intent.setComponent(component);
startActivity(intent);
方式三:
Intent intent = new Intent();
intent.setclass(this,SingleActivity .class);
startActivity(intent);
1.5.2 隱式跳轉
1.5.2.1 隱式跳轉之Action跳轉
1.在 AndroidManifest.xml文件中注冊
<activity android:name=".SignInActivity";
<intent-filter
<action android:name="customer_action_here" />
</intent-filter>
</activity>
2.在java代碼中調用
//創(chuàng)建一個隱式的 Intent 對象:Action 動作
Intent intent = new Intent();
//設置 Intent 的動作為清單中指定的action
intent.setAction("customer_action_here");
startActivity(intent);
1.5.2.2 隱式跳轉之Category跳轉
1.在 AndroidManifest.xml文件中注冊
<activity android:name=".SignInActivity" >
<intent-filter>
<action android:name="customer_action_here" />
<category android:name="customer_category_here" />
</intent-filter>
</activity>
2.在java代碼中調用
//創(chuàng)建一個隱式的 Intent 對象:Category 類別
Intent intent = new Intent();
intent.setAction("customer_action_here");
//添加與清單中相同的自定義category
intent.addCategory("customer_category_here");
startActivity(intent);
1.5.2.3 隱式跳轉之Data跳轉
1.在 AndroidManifest.xml文件中注冊
< activity android:name=".SignInActivity">
< intent-filter>
< category android:name="android.intent.category.DEFAULT" />
< data
android:scheme="content"
android:host="com.example.intentdemo"
android:port="8080"
android:pathPattern=".*pdf"
android:mimeType="text/plain"/>
< /intent-filter>
< /activity>
2.在java代碼中調用
//創(chuàng)建一個隱式的 Intent 對象,方法四:Date 數據
Intent intent = new Intent();
Uri uri = Uri.parse("content://com.example.intentdemo:8080/abc.pdf");
intent.setDataAndType(uri, "text/plain");
startActivity(intent);
1.5.2.4 拓展 隱式跳轉之瀏覽網頁
Uri uri=new Uri ("www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
1.5.2.5 拓展 隱式跳轉之調用地圖
//打開地圖查看經緯度
Uri uri = Uri.parse("geo:38.899533,-77.036476");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
1.5.2.6 拓展 隱式跳轉之調用電話撥號(不需要撥號權限)
Uri uri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);
1.5.2.7 拓展 隱式跳轉之調用電話直接撥號(需要撥號權限)
Uri uri = Uri.parse("tel:15980665805");
Intent intent = new Intent(Intent.ACTION_CALL, uri);//注意區(qū)別于上面的aciton
startActivity(intent);
1.5.2.8 拓展 隱式跳轉之調用短信程序
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("sms_body", "這里寫短信內容");
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);
//指定了接受者
Uri uri = Uri.parse("smsto:10086");//指定接收者
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "你這個黑心運營商");
startActivity(intent);
1.5.2.9 拓展 隱式跳轉之調用郵件程序
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:xxx@gmail.com"));
intent.putExtra(Intent.EXTRA_SUBJECT, "這是標題");
intent.putExtra(Intent.EXTRA_TEXT, "這是內容");
startActivity(intent);
1.5.2.10 拓展 隱式跳轉之調用音樂播放器
Intent intent = new Intent(Intent.ACTION_VIEW);
//Uri uri = Uri.parse("file:///sdcard/xiong_it.mp4");
Uri uri = Uri.parse("file:///sdcard/xiong_it.mp3");
intent.setDataAndType(uri, "audio/mp3");
startActivity(intent);
1.5.2.11 拓展 隱式跳轉之調用視頻播放器
Intent intent = new Intent(Intent.ACTION_VIEW);
//Uri uri = Uri.parse("file:///sdcard/xiong_it.mp3");
Uri uri = Uri.parse("file:///sdcard/xiong_it.mp4");
intent.setDataAndType(uri, "video/mp4");
startActivity(intent);
1.5.2.12 拓展 隱式跳轉之調用視頻播放器
Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "android");
startActivity(intent);
2. Service 服務
2.1 Service 的介紹
Service 一個可以在后臺執(zhí)行長時間運行操作而不提供用戶界面的應用組件。 Activity 是可以看見的而Service是不能看見的。服務可由其他應用組件啟動,而且即使用戶切換到其他應用,服務仍將在后臺繼續(xù)運行。 此外,組件可以綁定到服務,以與之進行交互,甚至是執(zhí)行進程間通信 (IPC)。 例如,服務可以處理網絡事務、播放音樂,執(zhí)行文件 I/O 或與內容提供程序交互,而所有這一切均可在后臺進行。
Service 不是單獨的運行,默認情況下是運行在主程序中。
Service 存在價值雖然不如Activity那么明顯,在執(zhí)行一些耗時的操作的時候需要用到Service ,而主程序一般不執(zhí)行耗時操作,這樣會阻塞線程,所以必須重開一個子線程,再將子線程用于執(zhí)行耗時操作。Service充當線程管理者的角色
2.2 Service的啟動方式和生命周期
Service 的啟動方式
1)、 Context.startService()
調用者與服務之間沒有關聯(lián),即使調用者退出,服務仍可運行
2)、 Context.bindService()
調用者與服務綁定在一起,調用者一旦退出,服務也就終止
2.3 Started Service總結:
1.Activity頁面中需要startService(intent) 和 stopService(intent)兩個方法來啟動Service和停止Service;
- 繼承于Service類的自定義子類——MyStartService類中,生命周期回調方法有:onCreate() 、onStartCommand() 、onDestroy();
- 如果停止服務,可以在Activity中調用stopService(intent),也可以intent到Service中執(zhí)行stopSelf()方法;
4.執(zhí)行停止服務方法,會回調Service生命周期中的onDestroy()方法;
5.如果希望關閉Activity窗體,服務也停止,那么在Activity的onDestroy()方法中執(zhí)行stopService()方法。如果希望關閉窗體后,服務還繼續(xù),那么Activity的onDestroy()中不執(zhí)行停止服務即可;
6.在StartService中不會回調onBind()方法;
- 在停止服務后,如果再次點擊“播放”,可以重新啟動StartService。
在實際使用的時候最后自定義一個類繼承service.
3.Content Provider
我覺得將Content Provide 叫做內容提供者挺合適的。談Content Provide的時候就必須套說說數據庫了。數據庫在Android 是私有的,這樣你就不能隨便拿我的數據了。數據的安全性就得到了保障,但是當你需要將自己數據庫的數據提供給別的應用程序的時候,你該怎么辦呢?這時候就需要Content Provider來實現(xiàn)了。其他的應用程序需要使用數據的時候,可以通過Content Resolve來操作Content Provider暴露出來的數據。
?? 一旦某個應用程序通過Content Provider暴露了自己的數據操作接口,那么不管該應用程序是否啟動,其他應用程序都可以通過該接口來操作被暴露的內部數據,包括增加數據、刪除數據、修改數據、查詢數據等。
??雖然大部分使用Content Provider操作的數據都來自于數據庫,但是也可以來自于文件、SharedPreferences、XML或網絡等其他存儲方式。
3.1 Content Provider的核心類
1、Content Provider:(A應用暴露數據)
● 一個程序可以通過實現(xiàn)一個Content Provider的抽象接口將自己的數據暴露出去;
● 外界根本看不到,也不用看到這個應用暴露的數據在應用當中是如何存儲的,是用數據庫存儲還是用文件存儲,還是通過網上獲得,這些一切都不重要,重要的是外界可以通過這一套標準及統(tǒng)一的接口和程序里的數據打交道,可以讀取程序的數據,也可以修改程序的數據。
2、Content Resolver:(操作A應用所暴露的數據)
● 外界的程序通過ContentResolver接口可以訪問ContentProvider提供的數據;
● ContentResolver 可以理解成是HttpClient的作用。
3、 Uri:Uri是ContentResolver和ContentProvider進行數據交換的標識。
● 每個ContentProvider提供公共的URI來唯一標識其數據集。管理多個數據集的(多個表)的 ContentProvider 為每個數據集提供了單獨的URI。
● Uri 的標準前綴:以“content://”作為前綴,這個是標準的前綴,表示該數據由 ContentProvider 管理。
● Uri 的authority部分:該部分是完整的類名。(使用小寫形式)。
● Uri 的path部分(資源部分、數據部分): 用于決定哪類數據被請求。
● 被請求的特定記錄的id值。如果請求不僅限于某個單條數據,該部分及其前面的斜線應該刪除。
● 為了將一個字符串轉換成Uri,Android中提供了Uri的parse()靜態(tài)方法來實現(xiàn)。
【備注:】URI、URL、URN的區(qū)別:
● 首先,URI,是uniform resource identifier,統(tǒng)一資源標識符,用來唯一的標識一個資源。
● URL是uniform resource locator,統(tǒng)一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明了如何locate這個資源。
● URN,uniform resource name,統(tǒng)一資源命名,是通過名字來標識資源,比如mailto:java-net@java.sun.com。
也就是說,URI是以一種抽象的,高層次概念定義統(tǒng)一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。
總結一下:URL是一種具體的URI,它不僅唯一標識資源,而且還提供了定位該資源的信息。URI是一種語義上的抽象概念,可以是絕對的,也可以是相對的,而URL則必須提供足夠的信息來定位,所以,是絕對的。
3.2 使用ContentResolver 操作數據的步驟:
1、調用Context的getContentResolver()方法獲得ContentResolver 對象;
2、調用使用ContentResolver 的insert()、delete()、update()、query()方法操作數據。
● Uri insert(Uri uri, ContentValues values)
● int delete(Uri uri, String where, String[] whereArgs)
● int update(Uri uri, ContentValues values, String where, String[] whereArgs)
● Cursor query(Uri uri, String[] projection, String where, String[] whereArgs, String sortOrder)
參數解釋:
String where:表示帶有占位符的where子句組成的字符串;
String[] whereArgs:表示替換where參數中占位符后的數據組成的字符串數組;
String sortOrder:表示select語句中的order by子句組成的字符串;
String[] projection:表示select語句中需要查詢的所有的字段組成的字符串數組。
ContentValues values:是由數據庫中表字段和往該字段中放置的數據所組成的鍵值對對象。
【備注:】以上四個方法的參數分別是2、3、4、5個。
4.Broadcast 廣播 或者 Broadcast Receiver 廣播接收器
廣播接收器,也被稱為全局事件,或系統(tǒng)事件。
??當Android系統(tǒng)中任何程序有動作時,如果想通知其他程序,采用廣播的方式進行傳播是非常有效的。廣播從理論上說,可以將一個動作傳播給任意多個程序(當然,廣播接收器的數量會收到系統(tǒng)限制)。
??在Android中,有一些操作完成以后,會發(fā)送廣播,比如說發(fā)出一條短信,或打出一個電話,如果某個程序接收了這個廣播,就會做相應的處理。這個廣播跟我們傳統(tǒng)意義中的電臺廣播有些相似之處。之所以叫做廣播,就是因為它只負責“說”而不管你“聽不聽”,也就是不管你接收方如何處理。另外,廣播可以被不只一個應用程序所接收,當然也可能不被任何應用程序所接收。
??廣播機制最大的特點就是發(fā)送方并不關心接收方是否接到數據,也不關心接收方是如何處理數據的。
??Android中廣播的是操作系統(tǒng)中產生的各種各樣的事件。例如,收到一條短信就會產生一個收到短信息的事件。而Android操作系統(tǒng)一旦內部產生了這些事件,就會向所有的廣播接收器對象來廣播這些事件。
4.1 廣播機制的三要素
Android廣播機制包含三個基本要素:
1、廣播(Broadcast) - 用于發(fā)送廣播;
2、廣播接收器(Broadcast Receiver) - 用于接收廣播;
3、意圖內容(Intent)-用于保存廣播相關信息的媒介。
Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。而Broadcast Receiver是對發(fā)送出來的Broadcast進行過濾接受并響應的一類組件。
4.2 廣播的生命周期:
1、廣播接收器僅在它執(zhí)行這個方法時處于活躍狀態(tài)。當onReceive()返回后,它即為失活狀態(tài)。
2、擁有一個活躍狀態(tài)的廣播接收器的進程被保護起來而不會被殺死,但僅擁有失活狀態(tài)組件的進程則會在其它進程需要它所占有的內存的時候隨時被殺掉。
3、如果響應一個廣播信息需要很長的一段時間,一般會將其納入一個衍生的線程中去完成,而不是在主線程內完成它,從而保證用戶交互過程的流暢。廣播接收程序的時間限制為10秒。
4.3 注冊Broadcast Receiver的方法
Broadcast Receiver用于監(jiān)聽被廣播的事件(Intent),為了達到這個目的,Broadcast Receiver必須進行注冊,注冊的方法有以下兩種:
1、靜態(tài)注冊:
靜態(tài)注冊方式是在AndroidManifest.xml的application里面定義receiver并設置要接收的action。
如果在清單配置文件中配置了廣播接收器,那么程序在安裝后會自動注冊廣播接收器。
靜態(tài)注冊方式的特點:不管該應用程序是否處于活動狀態(tài),都會進行監(jiān)聽。
<receiver
android:name=".CallReceiver"
android:enabled="true">
<intent-filter >
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
其中MyReceiver為繼承Broadcast Receiver的類,重寫了onReceiver方法,并在onReceiver方法中對廣播進行處理。<intent-filter>標簽設置過濾器,接收指定action廣播。
2、動態(tài)注冊:
動態(tài)注冊方式是在activity里面調用當前上下文對象的registerReceiver() 方法 來注冊,和靜態(tài)的內容差不多。一個形參是receiver對象,另一個是IntentFilter對象。而IntentFilter構造方法的參數是要接收的action。
動態(tài)注冊方式特點:在代碼中進行注冊后,當應用程序關閉后,就不再進行監(jiān)聽。
MyReceiver receiver = new MyReceiver();
//創(chuàng)建過濾器,并指定action,使之用于接收同action的廣播
IntentFilter filter = new IntentFilter("android.intent.action.PHONE_STATE");
//注冊廣播接收器
registerReceiver(receiver, filter);
4.4 發(fā)送廣播
// 指定廣播目標Action
Intent intent = new Intent("MyReceiver_Action");
// 可通過Intent攜帶消息
intent.putExtra("msg", "發(fā)送廣播");
// 發(fā)送廣播消息
sendBroadcast(intent);
4.5、注銷BroadcastReceiver:
1、一般在onStart中注冊BroadcastReceiver,在onStop中取消BroadcastReceiver。
2、一個BroadcastReceiver 對象只有在被調用onReceive(Context, Intent)時才有效,當從該函數返回后,該對象就無效的了,結束生命周期。
//注銷廣播接收器
unregisterReceiver(receiver);
4.6 代碼中的使用
4.6.1 攔截短信
<receiver
android:name=".MySmsReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter android:priority="1" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" >
</action>
</intent-filter>
</receiver>
//Protocol Data Unit (PDU:協(xié)議數據單元)
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "==來短信了");
// 獲取短信的具體信息:短信發(fā)送號碼,短信內容,短信發(fā)送時間
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] smsMessage = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
smsMessage[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
String phoneNumber = smsMessage[0].getDisplayOriginatingAddress();
StringBuilder sb = new StringBuilder();
for (SmsMessage sms : smsMessage) {
sb.append(sms.getDisplayMessageBody());
}
String content = sb.toString();
Log.i(TAG, "==來短信了" + phoneNumber + ":" + content);
abortBroadcast();
}
4.6.2 、來去電監(jiān)聽:
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "==電話狀態(tài)改變了");
TelephonyManager manager = (TelephonyManager) context
.getSystemService(Service.TELEPHONY_SERVICE);
Bundle bundle = intent.getExtras();
// String phoneNumber0 = bundle
// .getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
phoneNumber = bundle.getString("incoming_number");
prefs = context.getSharedPreferences("phonenumber",
Context.MODE_PRIVATE);
if (phoneNumber != null) {
editor = prefs.edit();
editor.putString("phoneNumber", phoneNumber);
editor.commit();
} else {
phoneNumber = prefs.getString("phoneNumber", "");
}
int state = manager.getCallState();
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:// 鈴聲響動
Log.i(TAG, "==鈴聲響了" + phoneNumber);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:// 電話接聽
Log.i(TAG, "==接聽電話" + phoneNumber);
break;
case TelephonyManager.CALL_STATE_IDLE:// 掛電話了
Log.i(TAG, "==電話掛了" + phoneNumber);
break;
default:
break;
}
}
<receiver
android:name=".MyPhoneReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" >
</action>
</intent-filter>
</receiver>
4.6.3 截獲屏幕休眠與喚醒
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) {
Log.i(TAG, "==屏幕休眠了");
}
if (Intent.ACTION_SCREEN_ON.equals(intent.getAction())) {
Log.i(TAG, "==屏幕喚醒了");
}
}
【注冊:】
ScreenOffOnReceiver myReceiver = new ScreenOffOnReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
registerReceiver(myReceiver, filter);
【備注:】屏幕喚醒和休眠廣播只能在代碼中注冊,如果在清單配置文件中注冊將不起作用。
4.6.4 開機自動運行
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "監(jiān)聽到開機了", Toast.LENGTH_LONG).show();
Intent intent2 = new Intent(context, MainActivity.class);
context.startActivity(intent2);
}
<receiver
android:name=".LaunchReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
4.6.5 手機電池當前電量
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "電量降低 ", Toast.LENGTH_LONG).show();
}
<receiver
android:name=".BatteryReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" >
</action>
</intent-filter>
</receiver>
參考:【Android系統(tǒng)廣播大全】
- String ADD_SHORTCUT_ACTION 動作:在系統(tǒng)中添加一個快捷方式。
- String ALL_APPS_ACTION 動作:列舉所有可用的應用。輸入:無。
- String ALTERNATIVE_CATEGORY 類別:說明 activity 是用戶正在瀏覽的數據的一個可選操作。
- String ANSWER_ACTION 動作:處理撥入的電話。
- String BATTERY_CHANGED_ACTION 廣播:充電狀態(tài),或者電池的電量發(fā)生變化。
- String BOOT_COMPLETED_ACTION 廣播:在系統(tǒng)啟動后,這個動作被廣播一次(只有一次)。
- String BROWSABLE_CATEGORY 類別:能夠被瀏覽器安全使用的 activities 必須支持這個類別。
- String BUG_REPORT_ACTION 動作:顯示 activity 報告錯誤。
- String CALL_ACTION 動作:撥打電話,被呼叫的聯(lián)系人在數據中指定。
- String CALL_FORWARDING_STATE_CHANGED_ACTION 廣播:語音電話的呼叫轉移狀態(tài)已經改變。
- String CLEAR_CREDENTIALS_ACTION 動作:清除登陸憑證 (credential)。
- String CONFIGURATION_CHANGED_ACTION 廣播:設備的配置信息已經改變,參見 Resources.Configuration.
- Creator CREATOR 無 無
- String DATA_ACTIVITY_STATE_CHANGED_ACTION 廣播:電話的數據活動(data activity)狀態(tài)(即收發(fā)數據的狀態(tài))已經改變。
- String DATA_CONNECTION_STATE_CHANGED_ACTION 廣播:電話的數據連接狀態(tài)已經改變。
- String DATE_CHANGED_ACTION 廣播:日期被改變。
- String DEFAULT_ACTION 動作:和 VIEW_ACTION 相同,是在數據上執(zhí)行的標準動作。
- String DEFAULT_CATEGORY 類別:如果 activity 是對數據執(zhí)行確省動作(點擊, center press)的一個選項,需要設置這個類別。
- String DELETE_ACTION 動作:從容器中刪除給定的數據。
- String DEVELOPMENT_PREFERENCE_CATEGORY 類別:說明 activity 是一個設置面板 (development preference panel).
- String DIAL_ACTION 動作:撥打數據中指定的電話號碼。
- String EDIT_ACTION 動作:為制定的數據顯示可編輯界面。
- String EMBED_CATEGORY 類別:能夠在上級(父)activity 中運行。
- String EMERGENCY_DIAL_ACTION 動作:撥打緊急電話號碼。
- int FORWARD_RESULT_LAUNCH 啟動標記:如果這個標記被設置,而且被一個已經存在的 activity 用來啟動新的 activity,已有 activity 的回復目標 (reply target) 會被轉移給新的 activity。
- String FOTA_CANCEL_ACTION 廣播:取消所有被掛起的 (pending) 更新下載。
- String FOTA_INSTALL_ACTION 廣播:更新已經被確認,馬上就要開始安裝。
- String FOTA_READY_ACTION 廣播:更新已經被下載,可以開始安裝。
- String FOTA_RESTART_ACTION 廣播:恢復已經停止的更新下載。
- String FOTA_UPDATE_ACTION 廣播:通過 OTA 下載并安裝操作系統(tǒng)更新。
- String FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY 類別:To be used as code under test for framework instrumentation tests.
- String GADGET_CATEGORY 類別:這個 activity 可以被嵌入宿主 activity (activity that is hosting gadgets)。
- String GET_CONTENT_ACTION 動作:讓用戶選擇數據并返回。
- String HOME_CATEGORY 類別:主屏幕 (activity),設備啟動后顯示的第一個 activity。
- String INSERT_ACTION 動作:在容器中插入一個空項 (item)。
- String INTENT_EXTRA 附加數據:和 PICK_ACTIVITY_ACTION 一起使用時,說明用戶選擇的用來顯示的 activity;和 ADD_SHORTCUT_ACTION 一起使用的時候,描述要添加的快捷方式。
- String LABEL_EXTRA 附加數據:大寫字母開頭的字符標簽,和 ADD_SHORTCUT_ACTION 一起使用。
- String LAUNCHER_CATEGORY 類別:Activity 應該被顯示在頂級的 launcher 中。
- String LOGIN_ACTION 動作:獲取登錄憑證。
- String MAIN_ACTION 動作:作為主入口點啟動,不需要數據。
- String MEDIABUTTON_ACTION 廣播:用戶按下了“Media Button”。
- String MEDIA_BAD_REMOVAL_ACTION 廣播:擴展介質(擴展卡)已經從 SD 卡插槽拔出,但是掛載點 (mount point) 還沒解除 (unmount)。
- String MEDIA_EJECT_ACTION 廣播:用戶想要移除擴展介質(拔掉擴展卡)。
- String MEDIA_MOUNTED_ACTION 廣播:擴展介質被插入,而且已經被掛載。
- String MEDIA_REMOVED_ACTION 廣播:擴展介質被移除。
- String MEDIA_SCANNER_FINISHED_ACTION 廣播:已經掃描完介質的一個目錄。
- String MEDIA_SCANNER_STARTED_ACTION 廣播:開始掃描介質的一個目錄。
- String MEDIA_SHARED_ACTION 廣播:擴展介質的掛載被解除 (unmount),因為它已經作為 USB 大容量存儲被共享。
- String MEDIA_UNMOUNTED_ACTION 廣播:擴展介質存在,但是還沒有被掛載 (mount)。
- String MESSAGE_WAITING_STATE_CHANGED_ACTION 廣播:電話的消息等待(語音郵件)狀態(tài)已經改變。
- int MULTIPLE_TASK_LAUNCH 啟動標記:和 NEW_TASK_LAUNCH 聯(lián)合使用,禁止將已有的任務改變?yōu)榍熬叭蝿?(foreground)。
- String NETWORK_TICKLE_RECEIVED_ACTION 廣播:設備收到了新的網絡 "tickle" 通知。
- int NEW_TASK_LAUNCH 啟動標記:設置以后,activity 將成為歷史堆棧中的第一個新任務(棧頂)。
- int NO_HISTORY_LAUNCH 啟動標記:設置以后,新的 activity 不會被保存在歷史堆棧中。
- String PACKAGE_ADDED_ACTION 廣播:設備上新安裝了一個應用程序包。
- String PACKAGE_REMOVED_ACTION 廣播:設備上刪除了一個應用程序包。
- String PHONE_STATE_CHANGED_ACTION 廣播:電話狀態(tài)已經改變。
- String PICK_ACTION 動作:從數據中選擇一個項目 (item),將被選中的項目返回。
- String PICK_ACTIVITY_ACTION 動作:選擇一個 activity,返回被選擇的 activity 的類(名)。
- String PREFERENCE_CATEGORY 類別:activity是一個設置面板 (preference panel)。
- String PROVIDER_CHANGED_ACTION 廣播:更新將要(真正)被安裝。
- String PROVISIONING_CHECK_ACTION 廣播:要求 polling of provisioning service 下載最新的設置。
- String RUN_ACTION 動作:運行數據(指定的應用),無論它(應用)是什么。
- String SAMPLE_CODE_CATEGORY 類別:To be used as an sample code example (not part of the normal user experience).
- String SCREEN_OFF_ACTION 廣播:屏幕被關閉。
- String SCREEN_ON_ACTION 廣播:屏幕已經被打開。
- String SELECTED_ALTERNATIVE_CATEGORY 類別:對于被用戶選中的數據,activity 是它的一個可選操作。
- String SENDTO_ACTION 動作:向 data 指定的接收者發(fā)送一個消息。
- String SERVICE_STATE_CHANGED_ACTION 廣播:電話服務的狀態(tài)已經改變。
- String SETTINGS_ACTION 動作:顯示系統(tǒng)設置。輸入:無。
- String SIGNAL_STRENGTH_CHANGED_ACTION 廣播:電話的信號強度已經改變。
- int SINGLE_TOP_LAUNCH 啟動標記:設置以后,如果 activity 已經啟動,而且位于歷史堆棧的頂端,將不再啟動(不重新啟動) activity。
- String STATISTICS_REPORT_ACTION 廣播:要求 receivers 報告自己的統(tǒng)計信息。
- String STATISTICS_STATE_CHANGED_ACTION 廣播:統(tǒng)計信息服務的狀態(tài)已經改變。
- String SYNC_ACTION 動作:執(zhí)行數據同步。
- String TAB_CATEGORY 類別:這個 activity 應該在 TabActivity 中作為一個 tab 使用。
- String TEMPLATE_EXTRA 附加數據:新記錄的初始化模板。
- String TEST_CATEGORY 類別:作為測試目的使用,不是正常的用戶體驗的一部分。
- String TIMEZONE_CHANGED_ACTION 廣播:時區(qū)已經改變。
- String TIME_CHANGED_ACTION 廣播:時間已經改變(重新設置)。
- String TIME_TICK_ACTION 廣播:當前時間已經變化(正常的時間流逝)。
- String UMS_CONNECTED_ACTION 廣播:設備進入 USB 大容量存儲模式。
- String UMS_DISCONNECTED_ACTION 廣播:設備從 USB 大容量存儲模式退出。
- String UNIT_TEST_CATEGORY 類別:應該被用作單元測試(通過 test harness 運行)。
- String VIEW_ACTION 動作:向用戶顯示數據。
- String WALLPAPER_CATEGORY 類別:這個 activity 能過為設備設置墻紙。
- String WALLPAPER_CHANGED_ACTION 廣播:系統(tǒng)的墻紙已經改變。
- String WALLPAPER_SETTINGS_ACTION 動作:顯示選擇墻紙的設置界面。輸入:無。
- String WEB_SEARCH_ACTION 動作:執(zhí)行 web 搜索。
- String XMPP_CONNECTED_ACTION 廣播:XMPP 連接已經被建立。
- String XMPP_DISCONNECTED_ACTION 廣播:XMPP 連接已經被斷開。