Android 啟動(dòng)另一個(gè)App/apk中的Activity實(shí)現(xiàn)代碼
Android 啟動(dòng)另一個(gè)App/apk中的Activity實(shí)現(xiàn)代碼
前言:
Android提供了在一個(gè)App中啟動(dòng)另一個(gè)App中的Activity的能力,這使我們的程序很容易就可以調(diào)用其他程序的功能,從而就豐富了我們App的功能。比如在微信中發(fā)送一個(gè)位置信息,對(duì)方可以點(diǎn)擊這個(gè)位置信息啟動(dòng)騰訊地圖并導(dǎo)航。這個(gè)場(chǎng)景在現(xiàn)實(shí)中作用很大,尤其是朋友在陌生的環(huán)境找不到對(duì)方時(shí),這個(gè)功能簡(jiǎn)直就是救星。
本來想把本文的名字叫啟動(dòng)另一個(gè)進(jìn)程中的Activity。因?yàn)槊總€(gè)App都會(huì)運(yùn)行在自己的虛擬機(jī)中,每個(gè)虛擬機(jī)跑在一個(gè)進(jìn)程中。但仔細(xì)一想,能夠稱為一個(gè)進(jìn)程,前提是這個(gè)App必須要運(yùn)行起來才行。而Android提供的能力,是不需要另一個(gè)App啟動(dòng)就可以將其特定的Activity啟動(dòng)起來的。
我們有至少兩種辦法達(dá)到啟動(dòng)另一個(gè)App中的Activity,
第一種用action啟動(dòng),詳情見我之前的文章《啟動(dòng)自己另一個(gè)程序的activity》。
第二種用intent設(shè)置className或component的辦法啟動(dòng)。
舉例如下。新建兩個(gè)項(xiàng)目ProjectA和ProjectB,用B中的MainActivity啟動(dòng)A的MainActivitity。關(guān)鍵代碼如下:
ProjectB MainActivity
public void OnStartActivityClicked(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW);
String packageName = "com.lazytech.projecta";
String className = "com.lazytech.projecta.MainActivity";
intent.setClassName(packageName, className);
//second method
// intent.setComponent(new ComponentName(
// "com.lazytech.projecta",
// "com.lazytech.projecta.MainActivity"
// ));
Bundle bundle = new Bundle();
bundle.putString("msg", "this message is from project B ");
intent.putExtras(bundle);
intent.putExtra("pid", android.os.Process.myPid());
startActivityForResult(intent, 1);
// startActivity(intent);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
if(resultCode == RESULT_OK) {
textView.setText(data.getStringExtra("result"));
}
break;
}
}
ProjectA MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.text);
Intent intent = getIntent();
if(intent != null) {
textView.setText(intent.getStringExtra("msg"));
}
}
public void OnSendResult(View view) {
Intent intent = new Intent();
intent.putExtra("result","OK! from project a.");
this.setResult(RESULT_OK,intent);
this.finish();
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android通過XListView實(shí)現(xiàn)上拉加載下拉刷新功能
這篇文章主要為大家詳細(xì)介紹了Android通過XListView實(shí)現(xiàn)上拉加載下拉刷新功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android關(guān)于Button背景或樣式失效問題解決方法
大家好,本篇文章主要講的是Android關(guān)于Button背景或樣式失效問題解決方法,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
Android打開淘寶客戶端(手淘)效果及實(shí)現(xiàn)代碼
這篇文章主要介紹了Android打開淘寶客戶端(手淘)效果及實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04
android實(shí)現(xiàn)icon動(dòng)態(tài)旋轉(zhuǎn)效果
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)icon動(dòng)態(tài)旋轉(zhuǎn)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
Android自定義LocationMarker的實(shí)現(xiàn)詳解
這篇文章主要為大家詳細(xì)介紹一個(gè)比較簡(jiǎn)單的東西:自定義繪制Marker 其實(shí)就是自定義view, 跟軌跡沒太多關(guān)聯(lián),感興趣的小伙伴可以跟隨小編一起了解一下2023-02-02
Android編程之界面跳動(dòng)提示動(dòng)畫效果實(shí)現(xiàn)方法
這篇文章主要介紹了Android編程之界面跳動(dòng)提示動(dòng)畫效果實(shí)現(xiàn)方法,實(shí)例分析了Android動(dòng)畫效果的布局及功能相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Android 中解決Viewpage調(diào)用notifyDataSetChanged()時(shí)界面無刷新的問題
這篇文章主要介紹了Android 中解決Viewpage調(diào)用notifyDataSetChanged()時(shí)界面無刷新的問題的相關(guān)資料,這里提供相應(yīng)的解決辦法,需要的朋友可以參考下2017-08-08
Android Dialog 設(shè)置字體大小的具體方法
這篇文章介紹了Android Dialog 設(shè)置字體大小的具體方法,希望能幫助到有同樣需求的朋友,可能我的方法不是最好的,也希望有朋友指點(diǎn)2013-09-09

