我的anroid學習之路 Intent

2021-06-26 07:45:51 字數 3180 閱讀 2041

先回顧一下intent:什麼叫intent,

intent是乙個將要執行的動作的抽象的描述,由intent來協助完成android各個元件之間的通訊。比如呼叫activity例項化物件的startactivity()來啟動乙個activity,或者由broadcast intent()來傳遞給所有感興趣的broadcastreceiver, 或者由startservice()/bindservice()來啟動乙個後台的service。可見,intent主要用來啟動activity或者service(並攜帶需要傳遞的引數資訊),intent理解成activity之間的粘合劑。

intent的使用方式,有以下2種:

顯示呼叫 1:

public class userinfo

//建立乙個顯式的 intent 物件(方法一:在建構函式中指定)

intent intent = new intent(intent_demo.this, intent_demo1_result.class);

bundle bundle = new bundle();

bundle.putstring("id", strid);

intent.putextras(bundle);

intent.putextra("username", "test");

intent.putextra("userinfo", new userinfo(1, "name"));

startactivity(intent);

//建立乙個顯式的 intent 物件(方法二:用 setclass 方法)

intent intent = new intent();

bundle bundle = new bundle();

bundle.putstring("id", strid);

intent.setclass(intent_demo.this, intent_demo_result.class);

intent.putextras(bundle);

startactivity(intent);

隱式呼叫2:

//建立乙個隱式的 intent 物件:action 動作

/*** 這裡指定的是 androidmanifest.xml 檔案中配置的

* 標籤中的

* 所在的 activity,注意這裡都要設定

*/intent intent = new intent();

//設定 intent 的動作

intent.setaction("com.great.activity_intent.intent_demo.result");

bundle bundle = new bundle();

bundle.putstring("id", strid);

intent.putextras(bundle);

startactivity(intent);

再看看如何呼叫系統的元件:

1.撥打** //要使用這個必須在配置檔案中加入

uri uri = uri.parse("tel:13023198367");

intent intent = new intent(intent.action_call, uri);

startactivity(intent);

2.傳送簡訊

uri uri = uri.parse("smsto:13023198367");

intent intent = new intent(intent.action_sendto, uri);

intent.putextra("sms_body", "the sms text");

startactivity(intent);

3.傳送email

uri uri = uri.parse(mailto:[email protected]);

intent intent = new intent(intent.action_sendto, uri);

startactivity(intent);

intent intent = new intent(intent.action_view);

uri uri = uri.parse("file:///sdcard/a.***");

intent.setdataandtype(uri, "audio/***");

startactivity(intent);

多個activity之間傳值可以通過bundle物件儲存需要傳遞的資料,例如:

在intentdemoactivity裡面傳值,
intent explicitintent=new intent(intentdemoactivity.this, explicitactivity.class); //這是在intent的建構函式中指定

edittext nametext=(edittext)findviewbyid(r.id.username);

// 通過bundle物件儲存需要傳遞的資料

bundle bundle=new bundle();

bundle.putstring("username", nametext.gettext().tostring());

//把bundle物件bundle給explicitintent

explicitintent.putextras(bundle);

startactivity(explicitintent);

兩個個activity之間切換
在explicitactivity頁面上加乙個返回按鈕,並在事件寫如下**:

/*給上乙個activity返回結果*/

intent intent=new intent(explicitactivity.this, intentdemoactivity.class);

//這是在intent的建構函式中指定

explicitactivity.this.setresult(result_ok,intent);

/*結束本activity*/

explicitactivity.this.finish();

這樣就返回到intentdemoactivity這個activity去了。



我的學習之路

發信人 franky hoho 信區 cie 標 題 二 我的學習之路 發信站 荔園晨風bbs站 2005年12月27日18 30 07 星期二 站內信件 二 我的學習之路 1,暑假 為了能夠實現 dsp,學習c,這是今年七月份的事情,那時我的c基礎為0,我完 全不知道程式是什麼。那時什麼都想,我周...

我的MBD學習之路

mbd即為model based design 基於模型的設計。國內的汽車行業使用matlab simulink早已經不是什麼新鮮事兒了,我還在讀研的時候大家已經普遍的開始使用matlab simulink來做數學模型開發 資料處理分析以及演算法理論 在學校做專案的時候,那時候是用ti的dsp 24...

我的學習之路 bootstrap

bootstrap 內建了html,css,js外掛程式為一體的前端框架 響應式布局 設計一套頁面就可以使用於很多現實裝置 bootstrap 1.入門 響應式布局的容器 1.先進入jquery的js 2.再引入bootstrap的js 3.引入bootstrap的css檔案 4.設定視口 支援移動...