1. 程式人生 > >Intent 簡介 結構 傳遞資料 常見Action 常量

Intent 簡介 結構 傳遞資料 常見Action 常量

Markdown版本筆記 我的GitHub首頁 我的部落格 我的微信 我的郵箱

Intent 簡介 結構 傳遞資料 常見Action

目錄

簡介

Intent 是 Android 程式中各個元件之間進行互動的重要方式之一,它既可以在不同 Activity 中指定想要完成的動作,還可以在不同元件間進行資料傳遞。
Intent作為聯絡各Activity之間的紐帶,其作用並不僅僅限於簡單的資料傳遞。通過其自帶的屬性,可以方便的完成很多較為複雜的操作。例如呼叫撥號功能、自動呼叫合適的程式開啟不同型別的檔案等等。諸如此類,都可以通過 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.

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 的組成結構


Intent 由以下六個部分組成:

Component name

mark

  • 即元件名稱,是要處理這個Intent物件的元件名稱。
  • 元件名稱物件由ComponentName類來封裝,元件名稱包含包名稱和類名稱,被宣告在AndroidManifest.xml檔案中。
  • 元件名稱通過 setComponent()、setClass()、setClassName()設定,通過getComponent()獲取。
  • 元件名稱是一個可選項,如果被設定,那麼Intent物件就顯式指定了要轉向的元件;如果沒有被設定,則Intent物件需要根據其他資訊進行篩選查詢。

Action

mark

  • Action是指Intent要完成的動作,是一個字串常量。使用 setAction()getAction() 來設定和讀取Action屬性。
  • 注意:一個 Intent 只能指定一個 action,但是一 個Activity(或廣播等元件)可以設定(監聽、匹配)多個 action(即intent-filter中可以設定多個action屬性),這是兩個不同的概念

Data

mark

  • Data屬性用來執行執行動作的Uri和mimeType,不同的動作有不同的資料規格。
  • 當元件能夠匹配intent時,知道mimeType是很重要的。比如,一個展示影象的元件不應該被叫去播放一個音訊。
  • 很多情況下,從Uri可以看出資料型別,比如content:表示資料是在裝置上,但是是由content provider控制。
  • 資料型別也可以顯式指定,比如使用setData(Uri)指定資料為Uri,使用setType(String type)指定mimeType,使用 setDataAndType() 同時指定Uri和MIMEType。讀取的時候URI用getData(),mimeType用getType()

Category

mark

  • Category是一個字串,提供了額外的資訊,有關於能夠處理這個Intent物件的元件種類,一般在隱式地啟動activity時需要用到。
  • 與category相應的方法有新增addCategory()、移除removeCategory() 和獲取getCategories()
  • Intent的 Category 預設為CATEGORY_DEFAULT,為防止出bug,建議intent-filter中都新增一個 category 屬性

Extras

mark

  • 傳遞給Intent的額外資料,以Bundle的形式定義,就是一些鍵值對
  • 資料可以被作為一個Bundle物件被使用,利用 putExtras()getExtras() 方法。

Flags

mark

  • 各種型別的Flag。很多是用來指定Android系統如何啟動activity,還有啟動了activity後如何對待它
  • 所有用到的值都定義在Intent類中

與 Intent 相關的 API

Activity中的相關方法

public Intent getIntent()
protected void onActivityResult(int requestCode, int resultCode, Intent data)
public final void setResult(int resultCode, Intent data)
public ComponentName startService(Intent service) 
public boolean stopService(Intent name)
public boolean bindService(Intent service, ServiceConnection conn, int flags)
public void unbindService(ServiceConnection conn)
public void sendBroadcast(Intent intent, String receiverPermission) 

Intent的構造方法

Intent()
Intent(Context packageContext, Class<?> cls)
Intent(Intent o)
Intent(String action)
Intent(String action, Uri uri)//Uri即為通過setData設定的資料
Intent(String action, Uri uri, Context packageContext, Class<?> cls)

Intent 中的方法

public Intent addCategory(String category)  為一個intent物件增加一個category
public Set<String> getCategories()
public Intent putExtra(String name, Bundle value)//可以新增很多型別的資料
public Bundle getExtras()
public Intent setAction(String action)
public Intent setClass(Context packageContext, Class<?> cls)
public Intent setData(Uri data)
public Intent setDataAndType(Uri data, String type)//Set an explicit MIME data type.

通過 Intent 傳遞資料

可以傳遞的資料型別

  • 八大基本型別 以及 StringCharSequence 型別及其對於的陣列型別

  • 可序列化物件及其陣列,也可將物件序列化為Json字串後傳遞:new Gson().toJson(obj)

public Intent putExtra(String name, Serializable value) //Serializable 陣列的型別仍然是 Serializable
public Intent putExtra(String name, Parcelable value) //BitMap預設實現了Parcelable介面
public Intent putExtra(String name, Parcelable[] value)
  • 特定泛型的一些ArrayList(而非List):ArrayList<Integer>ArrayList<String>ArrayList<CharSequence>ArrayList<? extends Parcelable>
public Intent putIntegerArrayListExtra(String name, ArrayList<Integer> value)
public Intent putStringArrayListExtra(String name, ArrayList<String> value)
public Intent putCharSequenceArrayListExtra(String name, ArrayList<CharSequence> value)
public Intent putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)
  • 傳遞 Bundle 物件或其他 Intent 物件
public Intent putExtra(String name, Bundle value)
public Intent putExtras(Bundle extras)
public Intent putExtras(Intent src)

Bundle

本質上,以上所有型別的資料都是通過 Bundle 傳遞過去的,Bundle 中有所有以上型別相對應的方法:

private Bundle mExtras;  
public Intent putExtra(String name, int value) {
    if (mExtras == null) mExtras = new Bundle();
    mExtras.putInt(name, value); //Bundle 中的方法名更精準,傳遞什麼型別資料就用相對應的哪個方法
    return this;
}  
public Intent putExtra(String name, int[] value) {
    if (mExtras == null) mExtras = new Bundle();
    mExtras.putIntArray(name, value);
    return this;
}  

小技巧:通過 Intent 傳遞介面

定義了一個介面(回撥類):

public interface A {
    void a(String text);
}

根據需求定義了一個實現類:

public class B implements A, Serializable {
    @Override
    public void a(String text) {
        Log.i("bqt", "回撥:" + text);
    }
}

通過 Intent 傳遞這個實現類:

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("a", new B());
startActivity(intent);

然後就可以在需要時回撥:

A a = (A) getIntent().getSerializableExtra("a"); //強轉給介面即可
a.a("SecondActivity");

Intent 中定義的常量

Category

  • CATEGORY_DEFAULT //Android系統中預設的執行方式,按照普通Activity的執行方式執行。
  • CATEGORY_BROWSABLE //能夠被瀏覽器安全呼叫的activity必須支援這個category。設定該元件可以使用瀏覽器啟動
  • CATEGORY_ALTERNATIVE //設定這個activity是否可以被認為是使用者正在瀏覽的資料的一個可選擇的action
  • CATEGORY_SELECTED_ALTERNATIVE //設定這個activity是否可以被認為是使用者當前選擇的資料的一個可選擇的action
  • CATEGORY_TAB //想要在已有的TabActivity內部作為一個Tab使用
  • CATEGORY_LAUNCHER //設定該元件為在當前應用程式啟動器中優先順序最高的Activity,通常為入口ACTION_MAIN配合使用。 
  • CATEGORY_INFO //
  • CATEGORY_HOME //主activity,當應用程式啟動時,它是第一個顯示的activity
  • CATEGORY_PREFERENCE //這個activity是一個選項卡
  • CATEGORY_DEVELOPMENT_PREFERENCE //
  • CATEGORY_EMBED //可以執行在父activity容器內
  • CATEGORY_APP_MARKET //這個activity允許使用者瀏覽和下載新的應用程式
  • CATEGORY_MONKEY //這個activity可能被monkey或者其他的自動測試工具執行
  • CATEGORY_TEST //供測試使用(一般情況不使用)
  • CATEGORY_UNIT_TEST //聯合測試使用
  • CATEGORY_SAMPLE_CODE //作為一個簡單的程式碼示例使用(一般情況下不使用)
  • CATEGORY_OPENABLE //用來指示一個GET_CONTENT意圖只希望ContentResolver.openInputStream能夠開啟URI
  • CATEGORY_CAR_DOCK //
  • CATEGORY_DESK_DOCK //
  • CATEGORY_LE_DESK_DOCK //
  • CATEGORY_HE_DESK_DOCK //
  • CATEGORY_CAR_MODE //
  • CATEGORY_APP_BROWSER //和ACTION_MAIN一起使用,用來啟動瀏覽器應用程式
  • CATEGORY_APP_CALCULATOR //和ACTION_MAIN一起使用,用來啟動計算器應用程式
  • CATEGORY_APP_CALENDAR //和ACTION_MAIN一起使用,用來啟動日曆應用程式
  • CATEGORY_APP_CONTACTS //和ACTION_MAIN一起使用,用來啟動聯絡人應用程式
  • CATEGORY_APP_EMAIL //和ACTION_MAIN一起使用,用來啟動郵件應用程式
  • CATEGORY_APP_GALLERY //和ACTION_MAIN一起使用,用來啟動相簿應用程式
  • CATEGORY_APP_MAPS //和ACTION_MAIN一起使用,用來啟動地圖應用程式
  • CATEGORY_APP_MESSAGING //和ACTION_MAIN一起使用,用來啟動簡訊應用程式
  • CATEGORY_APP_MUSIC //和ACTION_MAIN一起使用,用來啟動音樂應用程式

Extra

  • 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 以KeyEvent物件方式存放觸發Intent的按鍵
  • EXTRA_ORIGINATING_URI
  • EXTRA_PHONE_NUMBER 存放呼叫ACTION_CALL時的電話號碼
  • 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

Flag

  • FLAG_GRANT_READ_URI_PERMISSION //
  • FLAG_GRANT_WRITE_URI_PERMISSION //
  • FLAG_FROM_BACKGROUND //
  • FLAG_DEBUG_LOG_RESOLUTION //
  • FLAG_EXCLUDE_STOPPED_PACKAGES //
  • FLAG_INCLUDE_STOPPED_PACKAGES //
  • FLAG_ACTIVITY_NO_HISTORY //退出後不會存在於任務棧中
  • FLAG_ACTIVITY_SINGLE_TOP //單一頂部
  • FLAG_ACTIVITY_NEW_TASK //在新任務棧中開啟
  • FLAG_ACTIVITY_MULTIPLE_TASK //
  • FLAG_ACTIVITY_CLEAR_TOP //若此Activity已存在於任務棧中,再次啟動時彈出它所有頂部的Activity
  • FLAG_ACTIVITY_FORWARD_RESULT //
  • FLAG_ACTIVITY_PREVIOUS_IS_TOP //
  • FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS //
  • FLAG_ACTIVITY_BROUGHT_TO_FRONT //
  • FLAG_ACTIVITY_RESET_TASK_IF_NEEDED //
  • FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY //
  • FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET //
  • FLAG_ACTIVITY_NO_USER_ACTION //
  • FLAG_ACTIVITY_REORDER_TO_FRONT //
  • FLAG_ACTIVITY_NO_ANIMATION //
  • FLAG_ACTIVITY_CLEAR_TASK //
  • FLAG_ACTIVITY_TASK_ON_HOME //
  • FLAG_RECEIVER_REGISTERED_ONLY //
  • FLAG_RECEIVER_REPLACE_PENDING //
  • FLAG_RECEIVER_FOREGROUND //
  • FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT //
  • FLAG_RECEIVER_BOOT_UPGRADE //

Activity 相關的 Action

  • ACTION_MAIN //Android Application的入口,每個Android應用必須且只能包含一個此型別的Action宣告
  • ACTION_VIEW //系統根據不同的Data型別,通過已註冊的對應Application顯示資料。
  • ACTION_ATTACH_DATA //
  • ACTION_EDIT //系統根據不同的Data型別,通過已註冊的對應Application編輯示資料。
  • ACTION_PICK //從相簿獲取照片
  • ACTION_CHOOSER //
  • ACTION_GET_CONTENT //
  • ACTION_DIAL //開啟系統預設的撥號程式,如果Data中設定了電話號碼,則自動在撥號程式中輸入此號碼。
  • ACTION_CALL //直接呼叫Data中所帶的號碼
  • ACTION_SEND //由使用者指定傳送方式進行資料傳送操作
  • ACTION_SENDTO //系統根據不同的Data型別,通過已註冊的對應Application進行資料傳送操作
  • ACTION_ANSWER //接聽來電
  • ACTION_INSERT //
  • ACTION_DELETE //解除安裝應用程式
  • ACTION_RUN //
  • ACTION_SYNC //同步手機與資料伺服器上的資料
  • ACTION_PICK_ACTIVITY //
  • ACTION_SEARCH //
  • ACTION_WEB_SEARCH //
  • ACTION_FACTORY_TEST //

廣播相關的 Action

  • Intent.ACTION_AIRPLANE_MODE_CHANGED;//關閉或開啟飛航模式時的廣播
  • Intent.ACTION_BATTERY_CHANGED;//充電狀態,或者電池的電量發生變化
  • Intent.ACTION_BATTERY_LOW;//表示電池電量低
  • Intent.ACTION_BATTERY_OKAY;//表示電池電量充足,即從電池電量低變化到飽滿時會發出廣播
  • Intent.ACTION_BOOT_COMPLETED;//在系統啟動完成後,這個動作被廣播一次(只有一次)。
  • Intent.ACTION_CAMERA_BUTTON;//按下照相時的拍照按鍵(硬體按鍵)時發出的廣播
  • Intent.ACTION_CLOSE_SYSTEM_DIALOGS;//當螢幕超時進行鎖屏時
  • Intent.ACTION_CONFIGURATION_CHANGED;//裝置當前設定被改變時發出的廣播
  • Intent.ACTION_DATE_CHANGED;//裝置日期發生改變時會發出此廣播
  • Intent.ACTION_DEVICE_STORAGE_LOW;//裝置記憶體不足時發出的廣播,此廣播只能由系統使用,其它APP不可用
  • Intent.ACTION_DEVICE_STORAGE_OK;//裝置記憶體從不足到充足時發出的廣播,此廣播只能由系統使用,其它APP不可用
  • Intent.ACTION_DOCK_EVENT;//
  • Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE;//移動APP完成之後,發出的廣播(移動是指:APP2SD)
  • Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE;//正在移動APP時,發出的廣播(移動是指:APP2SD)
  • Intent.ACTION_GTALK_SERVICE_CONNECTED;//Gtalk已建立連線時發出的廣播
  • Intent.ACTION_GTALK_SERVICE_DISCONNECTED;//Gtalk已斷開連線時發出的廣播
  • Intent.ACTION_HEADSET_PLUG;//在耳機口上插入耳機時發出的廣播
  • Intent.ACTION_INPUT_METHOD_CHANGED;//改變輸入法時發出的廣播
  • Intent.ACTION_LOCALE_CHANGED;//裝置當前區域設定已更改時發出的廣播
  • Intent.ACTION_MANAGE_PACKAGE_STORAGE;//
  • Intent.ACTION_MEDIA_BAD_REMOVAL;//未正確移除SD卡但已把SD卡取出來時發出的廣播
  • Intent.ACTION_MEDIA_BUTTON;//按下"Media Button" 按鍵時發出的廣播,假如有"Media Button" 按鍵的話(硬體按鍵)
  • Intent.ACTION_MEDIA_CHECKING;//插入外部儲存裝置,比如SD卡時,系統會檢驗SD卡,此時發出的廣播
  • Intent.ACTION_MEDIA_EJECT;//已拔掉外部大容量儲存裝置發出的廣播
  • Intent.ACTION_MEDIA_MOUNTED;//插入SD卡並且已正確安裝(識別)時發出的廣播。廣播:擴充套件介質被插入,而且已經被掛載
  • Intent.ACTION_MEDIA_NOFS;//
  • Intent.ACTION_MEDIA_REMOVED;//外部儲存裝置已被移除,不管有沒正確解除安裝,都會發出此廣播?。廣播:擴充套件介質被移除
  • Intent.ACTION_MEDIA_SCANNER_FINISHED;//廣播:已經掃描完介質的一個目錄
  • Intent.ACTION_MEDIA_SCANNER_SCAN_FILE;//
  • Intent.ACTION_MEDIA_SCANNER_STARTED;//開始掃描介質的一個目錄
  • Intent.ACTION_MEDIA_SHARED;//擴充套件介質的掛載被解除 (unmount),因為它已經作為 USB 大容量儲存被共享
  • Intent.ACTION_MEDIA_UNMOUNTABLE;//
  • Intent.ACTION_MEDIA_UNMOUNTED;//擴充套件介質存在,但是還沒有被掛載 (mount)。
  • Intent.ACTION_NEW_OUTGOING_CALL;//撥號時
  • Intent.ACTION_PACKAGE_ADDED;//成功的安裝APK之後的廣播
  • Intent.ACTION_PACKAGE_CHANGED;//一個已存在的應用程式包已經改變,包括包名
  • Intent.ACTION_PACKAGE_DATA_CLEARED;//清除一個應用程式的資料時發出的廣播
  • Intent.ACTION_PACKAGE_INSTALL;//觸發一個下載並且完成安裝時發出的廣播,比如在電子市場裡下載應用
  • Intent.ACTION_PACKAGE_REMOVED;//成功的刪除某個APK之後發出的廣播
  • Intent.ACTION_PACKAGE_REPLACED;//替換一個現有的安裝包時發出的廣播
  • Intent.ACTION_PACKAGE_RESTARTED;//使用者重新開始一個包,包的所有程序將被殺死
  • Intent.ACTION_POWER_CONNECTED;//插上外部電源時發出的廣播
  • Intent.ACTION_POWER_DISCONNECTED;//已斷開外部電源連線時發出的廣播
  • Intent.ACTION_PROVIDER_CHANGED;//
  • Intent.ACTION_REBOOT;//重啟裝置時的廣播
  • Intent.ACTION_SCREEN_OFF;//螢幕被關閉之後的廣播
  • Intent.ACTION_SCREEN_ON;//螢幕被開啟之後的廣播
  • Intent.ACTION_SHUTDOWN;//關閉系統時發出的廣播
  • Intent.ACTION_TIMEZONE_CHANGED;//時區發生改變時發出的廣播
  • Intent.ACTION_TIME_CHANGED;//時間被設定時發出的廣播
  • Intent.ACTION_TIME_TICK;//當前時間已經變化
  • Intent.ACTION_UID_REMOVED;//一個使用者ID已經從系統中移除發出的廣播
  • Intent.ACTION_UMS_CONNECTED;//裝置已進入USB大容量儲存狀態時發出的廣播
  • Intent.ACTION_UMS_DISCONNECTED;//裝置已從USB大容量儲存狀態轉為正常狀態時發出的廣播
  • Intent.ACTION_USER_PRESENT;//
  • Intent.ACTION_WALLPAPER_CHANGED;//裝置牆紙已改變時發出的廣播

Settings 中定義的 Action 常量

常用設定

  • ACTION_ACCESSIBILITY_SETTINGS 輔助功能模組的顯示設定
  • ACTION_ADD_ACCOUNT 顯示螢幕上建立一個新帳戶新增帳戶
  • ACTION_AIRPLANE_MODE_SETTINGS 顯示設定,以允許進入/退出飛航模式
  • ACTION_APN_SETTINGS 顯示設定,以允許配置APN
  • ACTION_APPLICATION_DETAILS_SETTINGS 有關特定應用程式的詳細資訊的顯示螢幕
  • ACTION_APPLICATION_DEVELOPMENT_SETTINGS 顯示設定,以允許應用程式開發相關的設定配置
  • ACTION_APPLICATION_SETTINGS 顯示設定,以允許應用程式相關的設定配置
  • ACTION_BLUETOOTH_SETTINGS 顯示設定,以允許藍芽配置
  • ACTION_DATA_ROAMING_SETTINGS 選擇of2G/3G顯示設定
  • ACTION_DATE_SETTINGS 顯示日期和時間設定,以允許配置
  • ACTION_DEVICE_INFO_SETTINGS 顯示一般的裝置資訊設定(序列號,軟體版本,電話號碼,等)
  • ACTION_DISPLAY_SETTINGS 顯示設定,以允許配置顯示
  • ACTION_INPUT_METHOD_SETTINGS 特別配置的輸入方法,允許使用者啟用輸入法的顯示設定
  • ACTION_INPUT_METHOD_SUBTYPE_SETTINGS 顯示設定來啟用/禁用輸入法亞型
  • ACTION_INTERNAL_STORAGE_SETTINGS 內部儲存的顯示設定
  • ACTION_LOCALE_SETTINGS 顯示設定,以允許配置的語言環境
  • ACTION_LOCATION_SOURCE_SETTINGS 顯示設定,以允許當前位置源的配置
  • ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS 顯示設定來管理所有的應用程式
  • ACTION_MANAGE_APPLICATIONS_SETTINGS 顯示設定來管理安裝的應用程式
  • ACTION_MEMORY_CARD_SETTINGS 顯示設定為儲存卡儲存
  • ACTION_NETWORK_OPERATOR_SETTINGS 選擇網路運營商的顯示設定
  • ACTION_PRIVACY_SETTINGS 顯示設定,以允許配置隱私選項
  • ACTION_QUICK_LAUNCH_SETTINGS 顯示設定,以允許快速啟動快捷鍵的配置
  • ACTION_SEARCH_SETTINGS 全域性搜尋顯示設定
  • ACTION_SECURITY_SETTINGS 顯示設定,以允許配置的安全性和位置隱私
  • ACTION_SETTINGS 顯示系統設定
  • ACTION_SOUND_SETTINGS 顯示設定,以允許配置聲音和音量
  • ACTION_SYNC_SETTINGS 顯示設定,以允許配置同步設定
  • ACTION_USER_DICTIONARY_SETTINGS 顯示設定來管理使用者輸入字典
  • ACTION_WIFI_IP_SETTINGS 顯示設定,以允許配置一個靜態IP地址的Wi – Fi
  • ACTION_WIFI_SETTINGS 顯示設定,以允許Wi – Fi配置
  • ACTION_WIRELESS_SETTINGS 顯示設定,以允許配置,如Wi – Fi,藍芽和行動網路的無線控制

測試程式碼

public class MainActivity extends ListActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String[] array = {"【設定介面相關Action】", "輔助功能(無障礙)", "新增帳戶", "無線和網路-1", "APN(接入點名稱)", "設定中指定應用程式的詳細資訊頁面","顯示所有安裝的應用-1", "顯示所有安裝的應用-2", "藍芽", "行動網路設定設定,2G/3G/4G", "日期和時間", "關於手機-裝置詳細配置資訊","顯示相關設定,如字型、亮度等", "語言和輸入法", "啟用/禁用輸入法亞型", "儲存-1", "語言", "位置資訊-定位", "顯示所有安裝的應用-3","顯示所有安裝的應用-4", "儲存-2", "可用網路", "備份和重置", "快捷鍵配置-可能無效", "全域性搜尋顯示設定-崩潰", "安全", "系統設定主頁面","聲音(和振動)", "賬戶同步設定", "個人字典", "IP設定(WLAN高階設定)", "WLAN設定", "無線和網路-2"};
        for (int i = 1; i < array.length; i++) {
            array[i] = i + "、" + array[i];
        }
        setListAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, Arrays.asList(array)));
    }

    @SuppressLint("SdCardPath")
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        switch (position) {
            case 0:
                return;
            case 1:
                intent.setAction(Settings.ACTION_ACCESSIBILITY_SETTINGS);//輔助功能(無障礙)模組的顯示設定。
                break;
            case 2:
                intent.setAction(Settings.ACTION_ADD_ACCOUNT);//顯示螢幕上建立一個新帳戶新增帳戶。
                break;
            case 3:
                intent.setAction(Settings.ACTION_AIRPLANE_MODE_SETTINGS);//進入/退出飛航模式。
                break;
            case 4:
                intent.setAction(Settings.ACTION_APN_SETTINGS);//配置的APN。
                break;
            case 5:
                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);//有關特定應用程式的詳細資訊的顯示螢幕。
                intent.setData(Uri.fromParts("package", getPackageName(), null));
                break;
            case 6:
                intent.setAction(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS);//顯示設定,以允許應用程式開發相關的設定配置
            case 7:
                intent.setAction(Settings.ACTION_APPLICATION_SETTINGS);//應用程式相關的設定配置
                break;
            case 8:
                intent.setAction(Settings.ACTION_BLUETOOTH_SETTINGS);//藍芽配置
                break;
            case 9:
                intent.setAction(Settings.ACTION_DATA_ROAMING_SETTINGS);//   選擇of2G/3G顯示設定
                break;
            case 10:
                intent.setAction(Settings.ACTION_DATE_SETTINGS);//顯示日期和時間設定,以允許配置
                break;
            case 11:
                intent.setAction(Settings.ACTION_DEVICE_INFO_SETTINGS);//顯示一般的裝置資訊設定(序列號,軟體版本,電話號碼,等)
                break;
            case 12:
                intent.setAction(Settings.ACTION_DISPLAY_SETTINGS);//顯示設定,以允許配置顯示
                break;
            case 13:
                intent.setAction(Settings.ACTION_INPUT_METHOD_SETTINGS);//   特別配置的輸入方法,允許使用者啟用輸入法的顯示設定
                break;
            case 14:
                intent.setAction(Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS);//   顯示設定來啟用/禁用輸入法亞型
                break;
            case 15:
                intent.setAction(Settings.ACTION_INTERNAL_STORAGE_SETTINGS);//內部儲存的顯示設定
                break;
            case 16:
                intent.setAction(Settings.ACTION_LOCALE_SETTINGS);//顯示設定,以允許配置的語言環境
                break;
            case 17:
                intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);//顯示設定,以允許當前位置源的配置
                break;
            case 18:
                intent.setAction(Settings.ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS);//顯示設定來管理所有的應用程式
                break;
            case 19:
                intent.setAction(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);//顯示設定來管理安裝的應用程式
                break;
            case 20:
                intent.setAction(Settings.ACTION_MEMORY_CARD_SETTINGS);//顯示設定為儲存卡儲存
                break;
            case 21:
                intent.setAction(Settings.ACTION_NETWORK_OPERATOR_SETTINGS);//選擇網路運營商的顯示設定
                break;
            case 22:
                intent.setAction(Settings.ACTION_PRIVACY_SETTINGS);//顯示設定,以允許配置隱私選項
                break;
            case 23:
                intent.setAction(Settings.ACTION_QUICK_LAUNCH_SETTINGS);//顯示設定,以允許快速啟動快捷鍵的配置
                break;
            case 24:
                intent.setAction(Settings.ACTION_SEARCH_SETTINGS);//全域性搜尋顯示設定
                break;
            case 25:
                intent.setAction(Settings.ACTION_SECURITY_SETTINGS);//顯示設定,以允許配置的安全性和位置隱私
                break;
            case 26:
                intent.setAction(Settings.ACTION_SETTINGS);//顯示系統設定
                break;
            case 27:
                intent.setAction(Settings.ACTION_SOUND_SETTINGS);//顯示設定,以允許配置聲音和音量
                break;
            case 28:
                intent.setAction(Settings.ACTION_SYNC_SETTINGS);//顯示設定,以允許配置同步設定
                break;
            case 29:
                intent.setAction(Settings.ACTION_USER_DICTIONARY_SETTINGS);//顯示設定來管理使用者輸入字典
                break;
            case 30:
                intent.setAction(Settings.ACTION_WIFI_IP_SETTINGS);//顯示設定,以允許配置一個靜態IP地址的Wi – Fi
                break;
            case 31:
                intent.setAction(Settings.ACTION_WIFI_SETTINGS);//顯示設定,以允許Wi – Fi配置
                break;
            case 32:
                intent.setAction(Settings.ACTION_WIRELESS_SETTINGS);//顯示設定,以允許配置,如Wi – Fi,藍芽和行動網路的無線控制
                break;
        }
        startActivity(intent);
    }
}

2018-11-17

相關推薦

Intent 簡介 結構 傳遞資料 常見Action 常量

Markdown版本筆記 我的GitHub首頁 我的部落格 我的微信 我的郵箱 Intent 簡介 結構 傳遞資料 常見Action 目錄 簡介 Intent 是 Android 程式中各個元件之間進行互動的重要方式之一,它既可以在不同 Activity 中指

Android 使用Intent和Bundle傳遞資料及如何傳遞enum

                        轉載請標明出處:

Intent傳遞資料重複問題

Android解決Intent中的資料重複問題 轉載地址:http://www.cnblogs.com/anrainie/articles/2383941.html 最近在研究Android,遇到了一些Notification(通知)的問題: 1、Notification如何傳遞引數

資料結構中最常見的排序演算法-Java

1.選擇排序 a) 原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最後,直到全部記錄排序完畢。也就是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基於此思想的演算法主要有簡單選擇排序、樹型選擇排序和堆排序。(這裡只介

MFC視窗之間傳遞資料結構體)

MFC視窗之間的通訊一般會利用傳送訊息的方式傳遞,那麼具體如何實現呢,程式碼如下: 下面實現的是一個子視窗把訊息傳送到主視窗的示例: 1.訊息傳送視窗部分程式碼: 首先新增自定義訊息; #defi

6.Android的學習(Intent跳轉頁面,活動之間傳遞資料)

Intent跳轉頁面 (1)使用顯示Intent,首先建立一個空的活動,並且有佈局,在onClick()下面新增: Intent裡面的第一個引數是當前活動頁面,第二引數是要跳轉的活動頁面。這段程式碼在當前活動頁面。 2.  (1)向下一個活動傳遞資料  · 主活動介

Activity之間傳遞資料的方式及常見問題總結

Activity之間傳遞資料一般通過以下幾種方式實現: 通過intent傳遞資料 通過Application 使用單例 靜態成員變數。(可以考慮 WeakReferences) 持久化(sqlite、share preference、file等)

ANDROID----使用Intent傳遞資料----startActivityForResult

eg: //這個是在第一個顯示的Activity中 Intent intent=new Intent(MainActivity.this,otherActivity.class); startActivityForResult(intent,requestCode); 在另外一個Activi

C資料結構-幾種常見的排序:冒泡,選擇,插入,希爾

幾種常見的排序 實際開發中,我們最常見到最常使用的排序莫過於:氣泡排序、選擇排序、插入排序和希爾排序。希爾排序其實就是一種特殊的插入排序。 #ifndef ALGORITHM_H #define ALGORITHM_H #define ARRAR_SIZ

Intent傳遞資料 對於GsonFormat生成的資料需要將裡面的所有內部類實現序列化接口才可打包過去

Intent傳遞資料  對於GsonFormat生成的資料需要將裡面的所有內部類實現序列化接口才可打包過去 Intent intent = new Intent(context,ReYinKouBeiActivity.class);Bundle bundle=new Bu

Android Intent傳值(兩個Activity之間傳遞資料

在兩個Activity之間傳遞資料,最終都是通過Intent傳遞,但設定資料和儲存資料方式有兩種(使用Intent 和 Bundle),分別對應如下: 設定資料(MainActivity.java) 方法一:1.直接用intent.putExtra(“name”,“張三”)

使用顯式Intent向下一個活動傳遞資料

在啟動活動時傳遞資料的思路很簡單,Intent提供了一系列putExtra()方法的過載,可以把我們想要傳遞的資料暫存在Intent中,啟動了另一個活動後,只需要把這些資料再從Intent中取出取出就可以了。比如說MainActivity中有一個字串,現在想把這個字元傳遞到SecondActivit

2.3 使用intent物件傳遞資料

除了從intent返回資料之外,也經長需要傳遞資料給activity。 建立一個android專案:PassingData 在activity_main.xml中新增: <RelativeLayout xmlns:android="http://sch

[資料結構與演算法]-常見演算法時間複雜度(程式執行時間)計演算法則

本文歡迎轉載,轉載前請聯絡作者,經允許後方可轉載。轉載後請註明出處,謝謝! http://blog.csdn.net/colton_null 作者:喝酒不騎馬 Colton_Null from CSDN 一.引言 演算法(Algorithm)是為求解

Android 最全 Intent 傳遞資料姿勢

點選上面藍色字型關注“IT大飛說” 置頂公眾號(ID:ITBigFly)第一時間收到推送 作為一個 Android 開發人員,我們都是用過 Intent,用它來在元件之間傳遞資料,所以說 Intent 是元件之間通訊的使者,一般情況下,我們傳遞的都

Intent傳遞資料底層分析

我們知道在Activity切換時,如果需要向下一個ActivityB傳遞資料,可以藉助Intent物件的putExtra方法。  但是不知各位有沒有想過這樣一個問題:ActivityB中獲取到的物件跟上一個Activity中的那個物件有什麼關係?  換句話說就是,我在ActivityB中通過Intent獲取

藉助 Python 輕鬆理解資料結構中的常見演算法

一、前言 在人工智慧領域,如機器學習、深度學習等,優先使用 Python 語言進行開發,演算法清晰自然,資料分析庫齊全。 同理,在資料結構與演算法的基礎方面,從 Python 入手,能很好掌握各類基礎演算法。 之前使用 C -> C++ -> Jav

安卓學習第28天:使用Intent在活動之間傳遞資料以及Activity的生命週期例項

活動之間傳遞的資料是同過Intent傳遞的,通過呼叫Intent例項的方法putExtra(),可以傳遞一個鍵值對,puExtra()方法接收兩個引數,第一個引數是鍵,用於後面從 Intent中取值,第二個引數才是真正要傳遞的資料。然後在另一個活動中通過getExtra()

Android通過Intent傳遞資料

日常開發中,我們經常遇到通過 Intent 來傳遞資料,預設情況,我們可以看到支援的資料型別: 基本型別:boolean、byte、char 、short、double、float、int、long 字串型別:String、String[]、CharSe

Activity間通過Intent傳遞資料的大小限制。

http://blog.csdn.net/pingfangx/article/details/52093225 這個問題沒找到官方說明,針對網上的各種答案,自己實際測試了一下。 0x01結論 1.1傳512K以下的資料的資料可以正常傳遞。 1.2傳512K~102