一肴沫、簡(jiǎn)介
Activity略贮,安卓四大組件之一。
每個(gè) Activity 都會(huì)獲得一個(gè)用于繪制其用戶界面的窗口茫陆。窗口通常會(huì)充滿屏幕金麸,但也可小于屏幕并浮動(dòng)在其他窗口之上。
Android是使用任務(wù)(Task)來(lái)管理Activity的簿盅,一個(gè)任務(wù)就是一組存放在棧里的Activity集合挥下,這個(gè)棧被稱作返回棧,棧(堆棧)是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)桨醋,這里順便提一下另一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu):隊(duì)列棚瘟,隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。
當(dāng)啟動(dòng)一個(gè)新的Activity時(shí)喜最,它會(huì)被放入返回棧中偎蘸,并處于棧頂?shù)奈恢谩C慨?dāng)我們按下Back鍵或調(diào)用activity的finish()方法去銷毀一個(gè)活動(dòng)時(shí)返顺,處于棧頂?shù)腁ctivity會(huì)出棧禀苦,這時(shí)前一個(gè)入棧的Activity就會(huì)重新處于棧頂?shù)奈恢谩O到y(tǒng)總是會(huì)顯示處于棧頂?shù)腁ctivity給用戶遂鹊。
二振乏、知識(shí)點(diǎn)
1、生命周期
Activity生命周期是每一個(gè)Android開(kāi)發(fā)者都必須掌握的秉扑,當(dāng)我們深入理解活動(dòng)的生命周期之后慧邮,就可以寫(xiě)出更加連貫流暢的程序调限,讓我們的程序擁有更好的用戶體驗(yàn)
簡(jiǎn)單來(lái)說(shuō),Activity的生命周期可分為6+1的組成的模式(6分為三對(duì))
1.1误澳、6個(gè)常見(jiàn)的生命周期方法:
onCreate() 當(dāng)Activity創(chuàng)建時(shí)執(zhí)行
onStart() 當(dāng)Activity可見(jiàn)時(shí)執(zhí)行(可見(jiàn)了耻矮,但是看不到,沒(méi)獲得焦點(diǎn))
onResume() 當(dāng)Activity獲取焦點(diǎn)是執(zhí)行
onPause() 當(dāng)Activity失去焦點(diǎn)時(shí)執(zhí)行
onStop() 當(dāng)Activity不可見(jiàn)時(shí)執(zhí)行
onDestroy() 當(dāng)Activity銷毀時(shí)執(zhí)行
(獲取焦點(diǎn)才算真正可見(jiàn)忆谓,因?yàn)楂@取了焦點(diǎn)用戶才可以操作裆装,所以可見(jiàn)但是看不到這句話不矛盾)
加1就是加上這個(gè):
onRestart() 當(dāng)Activity正在重新啟動(dòng)時(shí)執(zhí)行。
就上面的6個(gè)常見(jiàn)的生命周期:
他們可以說(shuō)是根據(jù)特征可以分成三組的:
onCreate() 對(duì)應(yīng) onDestroy() 創(chuàng)建和銷毀
onStart() 對(duì)應(yīng) onStop() 可見(jiàn)和不可見(jiàn)
onResume() 對(duì)應(yīng) onPause() 獲取焦點(diǎn)和失去焦點(diǎn)
注意事項(xiàng):
- onPause()和onStop()被調(diào)用的前提是: 打開(kāi)了一個(gè)新的Activity倡缠!而前者是舊Activity還可見(jiàn)的狀態(tài)哨免;后者是舊Activity已經(jīng)不可見(jiàn)!
- 另外昙沦,親測(cè):AlertDialog和PopWindow是不會(huì)觸發(fā)上述兩個(gè)回調(diào)方法的~
1.2琢唾、生命周期方法逐個(gè)分析
最普通的正常的情況下我們點(diǎn)開(kāi)一個(gè)新的Activity然后按下返回鍵關(guān)了這個(gè)Activity生命周期是這樣子走的:
點(diǎn)開(kāi)一個(gè)新的Activity(還沒(méi)開(kāi)啟過(guò)): 先執(zhí)行onCreate,緊接著執(zhí)行onStart盾饮,接著這行onResume采桃,然后就停在這個(gè)onResume,我們做一些操作嘛丘损。 按下返回鍵:執(zhí)行onPause普办,接著onStop,然后onDestroy号俐,執(zhí)行了onDestroy了Activity也就銷毀了泌豆。
onCreate()
當(dāng)Activity被創(chuàng)建時(shí)的調(diào)用的方法定庵。只在創(chuàng)建的時(shí)候調(diào)用一次吏饿。 可以在這個(gè)方法里面做一些初始化的工作,比如setContentView加載布局文件蔬浙,初始化一些變量的值等猪落。這個(gè)是開(kāi)發(fā)中最常見(jiàn)的方法。
onStart()
Activity已經(jīng)可見(jiàn)了畴博,但是還沒(méi)辦法進(jìn)行交互笨忌,可以說(shuō)我們還看不見(jiàn)。(不要糾結(jié)這句看不見(jiàn)俱病,我們這里本文對(duì)于看見(jiàn)的理解是官疲,我必須要能交互我才算看見(jiàn),不然你說(shuō)給我看見(jiàn)但是我不能操作屏幕有什么意思亮隙。)
onResume()
Activity已經(jīng)獲取焦點(diǎn)了途凫,Activity處于可見(jiàn)的前臺(tái)了。用戶可以進(jìn)行交互了在這個(gè)階段溢吻。也可以理解為维费,必須獲取焦點(diǎn)才能進(jìn)行交互。
假設(shè)甲Activity是可見(jiàn)的可交互的,但是這時(shí)我們的乙Activity(一個(gè)新的非全屏的Activity或者一個(gè)透明的Activity)至于棧頂時(shí)犀盟,即在任務(wù)棧里我們的乙位甲的上方而晒,此刻我們的甲Activity就會(huì)處于Paused狀態(tài)了,也就是可見(jiàn)但是沒(méi)能進(jìn)行交互阅畴。
onPause()
Activity已經(jīng)失去焦點(diǎn)了倡怎。用戶沒(méi)有辦法在這個(gè)Activity進(jìn)行操作了。一般來(lái)說(shuō)當(dāng)用戶按下Home鍵或者按下Back鍵就會(huì)執(zhí)行這個(gè)方法贱枣,這個(gè)方法執(zhí)行后緊跟著都是執(zhí)行onStop() 如果是按下back鍵:onPause() → onStop() → onDestroy() 如果是按下Home鍵:onPause() → onStop()
onPause方法不能不能進(jìn)行回收工作诈胜,簡(jiǎn)單說(shuō)就是這里進(jìn)行回收工作很可能會(huì)拖慢影響其他Activty的顯示,后面會(huì)涉及到冯事。 回收和清理工作輕一點(diǎn)的科技交給onStop焦匈,重一些的交給onDestroy。
onStop()
Activity不可見(jiàn)了昵仅。 在這個(gè)方法我們可以進(jìn)行一些比較簡(jiǎn)單的回收工作缓熟。
onDestroy()
Activity被銷毀了遮精,這個(gè)Activity死掉了乎婿,出棧了烦绳,拜拜了名党。 在這里我們可以做一些最終的回收和資源釋放的工作诚撵。
onRestart()
Activity正在重新啟動(dòng)艺演,也就是從不可見(jiàn)變?yōu)榭梢?jiàn)的一個(gè)過(guò)程都许。 當(dāng)用戶按下Home鍵然后有回到當(dāng)前程序塞绿,就會(huì)執(zhí)行這個(gè)方法命辖,或者當(dāng)用戶從當(dāng)前甲Activity打開(kāi)一個(gè)新的Activity况毅,然后又back鍵返回到甲Activity,又或者用戶按下任務(wù)列表尔艇,然后選擇了剛剛打開(kāi)過(guò)的那個(gè)程序尔许,那么這個(gè)方法也會(huì)執(zhí)行。
2终娃、Activity的四個(gè)狀態(tài)
每個(gè)Activity在其生命周期中最多可能會(huì)有四種狀態(tài)味廊。
1.運(yùn)行狀態(tài)
當(dāng)一個(gè)Activity位于返回棧的棧頂時(shí),這時(shí)Activity就處于運(yùn)行狀態(tài)棠耕,系統(tǒng)會(huì)將處于棧頂?shù)腁ctivity顯示給用戶余佛。
2.暫停狀態(tài)
當(dāng)一個(gè)Activity不再處于棧頂位置,但仍然可見(jiàn)窍荧,這時(shí)Activity就進(jìn)入了暫停狀態(tài)辉巡。初學(xué)者可能會(huì)有這樣的疑問(wèn),既然Activity都已經(jīng)不在棧頂了搅荞,怎么會(huì)還可見(jiàn)呢红氯,這是因?yàn)椴⒉皇敲恳粋€(gè)Activity都會(huì)占滿整個(gè)屏幕的框咙,比如對(duì)話框形式的Activity只會(huì)占用屏幕中間的部分區(qū)域。
3.停止?fàn)顟B(tài)
當(dāng)一個(gè)Activity不再處于棧頂位置痢甘,并且完全不可見(jiàn)的時(shí)候喇嘱,就進(jìn)入了停止?fàn)顟B(tài)。
4.銷毀狀態(tài)
當(dāng)一個(gè)Activity從返回棧中移除后就變成了銷毀狀態(tài)塞栅。
3者铜、Activity的創(chuàng)建-關(guān)閉過(guò)程
1.自定義Activity類名,繼承Activity類或者它的子類;
2.重寫(xiě)onCreate()方法放椰,在該方法中調(diào)用setContentView()設(shè)置要顯示的視圖文件(R.layout.activity);
3.在AndroidManifest.xml文件中對(duì)Activity進(jìn)行配置;
4.啟動(dòng)Activity調(diào)用StartActivity(Intent);
5.關(guān)閉Activity調(diào)用finish()方法直接關(guān)閉當(dāng)前Activity;
4作烟、Activity的四種啟動(dòng)模式
1 .standard 默認(rèn)的啟動(dòng)模式,標(biāo)準(zhǔn)模式
結(jié)論:每開(kāi)啟一個(gè)Activity,就會(huì)在棧頂添加一個(gè)Activity實(shí)例砾医。多次間隔或者直接啟動(dòng)一個(gè)甲Activity會(huì)添加多個(gè)甲的示例拿撩,可重復(fù)添加。(間隔 ABA, 直接 ACC或者AAA)
這里我們需要明白一個(gè)事情如蚜,Service和ApplicationContext是沒(méi)辦法直接開(kāi)啟一個(gè)新的Activity压恒,因?yàn)橹挥蠥ctivity類型的Context的Activity才能開(kāi)啟,但還是有解決辦法的错邦,那就是讓我們要開(kāi)的那個(gè)新的Activity設(shè)置為FLAG_ACTIVITY_NEW_TASK標(biāo)識(shí)探赫。
2 .singletop 單一頂部模式 (頂部不會(huì)重復(fù))
結(jié)論:如果開(kāi)啟的Activity已經(jīng)存在一個(gè)實(shí)例在任務(wù)棧的頂部(僅限于頂部),再去開(kāi)啟這個(gè)Activity,任務(wù)棧不會(huì)創(chuàng)建新的Activity的實(shí)例了撬呢,而是復(fù)用已經(jīng)存在的這個(gè)Activity伦吠,onNewIntent方法被調(diào)用;之前打開(kāi)過(guò)魂拦,但不是位于棧頂毛仪,那么還是會(huì)產(chǎn)生新的實(shí)例入棧,不會(huì)回調(diào)onNewIntent方法晨另。
當(dāng)我們把一個(gè)Activity設(shè)置為singleTop潭千,當(dāng)我們點(diǎn)擊打開(kāi)這個(gè)Activity的時(shí)候谱姓,我們打開(kāi)B頁(yè)面借尿,會(huì)出現(xiàn)幾種情況:
說(shuō)明:當(dāng)前A和C都是Standard,B是singleTop
之前沒(méi)打開(kāi)過(guò): 此時(shí)任務(wù)棧里面只有A屉来,A所在的任務(wù)棧是S1路翻,這個(gè)時(shí)候打開(kāi)singleTop的B,B入棧茄靠,入的是S1這個(gè)棧茂契,誰(shuí)打開(kāi)它進(jìn)入誰(shuí)的棧,此時(shí)S1的情況是BA慨绳,B為棧頂掉冶。
之前打開(kāi)過(guò)真竖,但是位于棧頂: 那么復(fù)用這個(gè)棧,不會(huì)有新的實(shí)例壓入棧中厌小。同時(shí) onNewIntent 方法會(huì)被回調(diào)恢共,我們可以利用這個(gè)方法獲得頁(yè)面?zhèn)鬟^(guò)來(lái)的消息或者其他操作。
之前打開(kāi)過(guò)璧亚,但是不是位于棧頂: 那么還是會(huì)產(chǎn)生新的實(shí)例入棧讨韭。
3 .singleTask 單一任務(wù)
(整個(gè)任務(wù)棧只有一個(gè)對(duì)應(yīng)自身的實(shí)例) 結(jié)論:如果開(kāi)啟的甲Activity已經(jīng)存在一個(gè)實(shí)例在任務(wù)棧S1,再去開(kāi)啟這個(gè)Activity癣蟋,位于棧頂則直接復(fù)用透硝,回調(diào)onNewIntent方法;位于里面疯搅,也是復(fù)用濒生,回調(diào)onNewIntent方法,復(fù)用的同時(shí)的是直接把自己上方的全部Activity都干掉幔欧。
當(dāng)我們把一個(gè)Activity設(shè)置為singleTask模式之后甜攀,當(dāng)我們點(diǎn)擊開(kāi)啟這個(gè)Activity,會(huì)出現(xiàn)3種情況:
說(shuō)明:打開(kāi)B琐馆,A和C是Standard规阀,B是singleTask
之前沒(méi)開(kāi)啟過(guò):A開(kāi)啟B的時(shí)候,B進(jìn)入A的任務(wù)棧瘦麸。為了頂部
之前開(kāi)啟過(guò)情況1:如果現(xiàn)在任務(wù)棧情況是BA谁撼,B位于棧頂,此時(shí)點(diǎn)擊B滋饲,那么不會(huì)創(chuàng)建新的實(shí)例厉碟,任務(wù)棧還是BA,回調(diào)onNewIntent方法屠缭。
之前開(kāi)啟過(guò)情況2:假如現(xiàn)在任務(wù)棧情況是CBA箍鼓,C為了棧頂,那么這時(shí)打開(kāi)B呵曹,因?yàn)锽是singleTask款咖,這時(shí)不會(huì)創(chuàng)建新的實(shí)例,但是肯定會(huì)把B置為棧頂(B在回到棧頂?shù)臅r(shí)候不是跳過(guò)去的奄喂,而是把自己上面的其他Activity全部干掉铐殃,這樣就只剩下自己和自己下面的Activity了),那么這時(shí)任務(wù)棧里面的情況就剩下 BA跨新,回調(diào)onNewIntent方法.
4 .singleInstance單一實(shí)例(單例)富腊,任務(wù)棧里面自已自己一個(gè)人
結(jié)論:當(dāng)啟動(dòng)一個(gè)啟動(dòng)模式為singleInstance的Activity時(shí)(之前沒(méi)啟動(dòng)過(guò)),這時(shí)系統(tǒng)將開(kāi)辟出另外一個(gè)任務(wù)棧域帐,用于存放這個(gè)Activity赘被,而且這個(gè)新的任務(wù)棧只能存放自身這唯一一個(gè)Activity是整。singleInstance頁(yè)面作為前臺(tái)任務(wù)打開(kāi)自己打開(kāi)自己,則復(fù)用民假,任務(wù)棧順序無(wú)變化贰盗;singleInstance頁(yè)面作為后臺(tái)任務(wù)棧,則切換成為前臺(tái)任務(wù)棧阳欲,無(wú)新實(shí)例產(chǎn)生舵盈,復(fù)用。
復(fù)用就會(huì)調(diào)用onNewIntent方法球化。
默認(rèn)的Activity都是standard模式的秽晚,那如果我們要把一個(gè)Activity指定為 singleTask 模式呢?
有兩種啟動(dòng)方法:一種方法是manifest指定筒愚,另外一種方式是代碼指定赴蝇。
manifest指定
//比如我們要指定為singleTask模式 manifest里面的Activity有個(gè) launchMode屬性來(lái)制定啟動(dòng)模式:
<activity android:name=".SecondActivity"
android:launchMode="singleTask"/>
代碼指定intent.addFlag
//比如我們要指定為singleTop模式
Intent intent = new Intent();
intent.setClass(FirstActivity.this,SecondActivity.class);
// 通過(guò)Intent的addFlag指定
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
5、啟動(dòng)一個(gè)Activity的幾種方式
在Android中我們可以通過(guò)下面兩種方式來(lái)啟動(dòng)一個(gè)新的Activity,注意這里是怎么啟動(dòng)巢掺,而非 啟動(dòng)模式>淞妗!分為顯示啟動(dòng)和隱式啟動(dòng)陆淀!
- 顯式啟動(dòng):
通過(guò)包名來(lái)啟動(dòng)考余,寫(xiě)法如下:
①最常見(jiàn)的:
startActivity(new Intent(當(dāng)前Act.this,要啟動(dòng)的Act.class));
②通過(guò)Intent的ComponentName:
ComponentName cn = new ComponentName("當(dāng)前Act的全限定類名","啟動(dòng)Act的全限定類名") ;
Intent intent = new Intent() ;
intent.setComponent(cn) ;
startActivity(intent) ;
③初始化Intent時(shí)指定包名:
Intent intent = new Intent("android.intent.action.MAIN");
intent.setClassName("當(dāng)前Act的全限定類名","啟動(dòng)Act的全限定類名");
startActivity(intent);
2.隱式啟動(dòng):
// Intent-filter的Action,Category或data來(lái)實(shí)現(xiàn)
<intent-filter>
<action android:name="actionName" />
<category android:name="categoryName" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
//java代碼啟動(dòng)
Intent intent = new Intent();
intent.setAction("actionName");
intent.addCategory("categoryName")
startActivity(intent);
- 另外還有一個(gè)直接通過(guò)包名啟動(dòng)apk的:
Intent intent = getPackageManager().getLaunchIntentForPackage
("apk第一個(gè)啟動(dòng)的Activity的全限定類名") ;
if (intent != null)
startActivity(intent) ;
6、系統(tǒng)給我們提供的常見(jiàn)的Activity
好的轧苫,最后給大家附上一些系統(tǒng)給我們提供的一些常見(jiàn)的Activtiy吧楚堤!
//1.撥打電話
// 給移動(dòng)客服10086撥打電話
Uri uri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);
//2.發(fā)送短信
// 給10086發(fā)送內(nèi)容為“Hello”的短信
Uri uri = Uri.parse("smsto:10086");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "Hello");
startActivity(intent);
//3.發(fā)送彩信(相當(dāng)于發(fā)送帶附件的短信)
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("sms_body", "Hello");
Uri uri = Uri.parse("content://media/external/images/media/23");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("image/png");
startActivity(intent);
//4.打開(kāi)瀏覽器:
// 打開(kāi)Google主頁(yè)
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//5.發(fā)送電子郵件:(閹割了Google服務(wù)的沒(méi)戲!!!!)
// 給someone@domain.com發(fā)郵件
Uri uri = Uri.parse("mailto:someone@domain.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(intent);
// 給someone@domain.com發(fā)郵件發(fā)送內(nèi)容為“Hello”的郵件
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, "someone@domain.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "Hello");
intent.setType("text/plain");
startActivity(intent);
// 給多人發(fā)郵件
Intent intent=new Intent(Intent.ACTION_SEND);
String[] tos = {"1@abc.com", "2@abc.com"}; // 收件人
String[] ccs = {"3@abc.com", "4@abc.com"}; // 抄送
String[] bccs = {"5@abc.com", "6@abc.com"}; // 密送
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_BCC, bccs);
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "Hello");
intent.setType("message/rfc822");
startActivity(intent);
//6.顯示地圖:
// 打開(kāi)Google地圖中國(guó)北京位置(北緯39.9,東經(jīng)116.3)
Uri uri = Uri.parse("geo:39.9,116.3");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//7.路徑規(guī)劃
// 路徑規(guī)劃:從北京某地(北緯39.9含懊,東經(jīng)116.3)到上海某地(北緯31.2身冬,東經(jīng)121.4)
Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=39.9 116.3&daddr=31.2 121.4");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//8.多媒體播放:
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/foo.mp3");
intent.setDataAndType(uri, "audio/mp3");
startActivity(intent);
//獲取SD卡下所有音頻文件,然后播放第一首=-=
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//9.打開(kāi)攝像頭拍照:
// 打開(kāi)拍照程序
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
// 取出照片數(shù)據(jù)
Bundle extras = intent.getExtras();
Bitmap bitmap = (Bitmap) extras.get("data");
//另一種:
//調(diào)用系統(tǒng)相機(jī)應(yīng)用程序,并存儲(chǔ)拍下來(lái)的照片
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
time = Calendar.getInstance().getTimeInMillis();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
.getExternalStorageDirectory().getAbsolutePath()+"/tucue", time + ".jpg")));
startActivityForResult(intent, ACTIVITY_GET_CAMERA_IMAGE);
//10.獲取并剪切圖片
// 獲取并剪切圖片
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("crop", "true"); // 開(kāi)啟剪切
intent.putExtra("aspectX", 1); // 剪切的寬高比為1:2
intent.putExtra("aspectY", 2);
intent.putExtra("outputX", 20); // 保存圖片的寬和高
intent.putExtra("outputY", 40);
intent.putExtra("output", Uri.fromFile(new File("/mnt/sdcard/temp"))); // 保存路徑
intent.putExtra("outputFormat", "JPEG");// 返回格式
startActivityForResult(intent, 0);
// 剪切特定圖片
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
intent.setData(Uri.fromFile(new File("/mnt/sdcard/temp")));
intent.putExtra("outputX", 1); // 剪切的寬高比為1:2
intent.putExtra("outputY", 2);
intent.putExtra("aspectX", 20); // 保存圖片的寬和高
intent.putExtra("aspectY", 40);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true);
intent.putExtra("output", Uri.parse("file:///mnt/sdcard/temp"));
startActivityForResult(intent, 0);
//11.打開(kāi)Google Market
// 打開(kāi)Google Market直接進(jìn)入該程序的詳細(xì)頁(yè)面
Uri uri = Uri.parse("market://details?id=" + "com.demo.app");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//12.進(jìn)入手機(jī)設(shè)置界面:
// 進(jìn)入無(wú)線網(wǎng)絡(luò)設(shè)置界面(其它可以舉一反三)
Intent intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
startActivityForResult(intent, 0);
//13.安裝apk:
Uri installUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
//14.卸載apk:
Uri uri = Uri.fromParts("package", strPackageName, null);
Intent it = new Intent(Intent.ACTION_DELETE, uri);
startActivity(it);
//15.發(fā)送附件:
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3");
sendIntent.setType("audio/mp3");
startActivity(Intent.createChooser(it, "Choose Email Client"));
//16.進(jìn)入聯(lián)系人頁(yè)面:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(People.CONTENT_URI);
startActivity(intent);
//17.查看指定聯(lián)系人:
Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);//info.id聯(lián)系人ID
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(personUri);
startActivity(intent);
參考:(http://www.runoob.com/w3cnote/android-tutorial-activity.html)
寫(xiě)在最后: 本系列的文章旨在學(xué)習(xí)過(guò)程中的總結(jié)岔乔,如果對(duì)你也有幫助酥筝,榮幸之至。