Android之APP喚起另乙個APP

2021-09-12 14:21:02 字數 2570 閱讀 9994

一、使用包名,特定activity名拉起:

intent intent = new intent(intent.action_main);

/**知道要跳轉應用的包命與目標activity*/

componentname componentname = new componentname("com.***.***","com.***x.***.***.bactivity");

intent.setcomponent(componentname);

//這裡intent傳值

bundle bundle = new bundle();

bundle.putstring("key", "你好");

intent.putextras(bundle);

startactivity(intent);

android:exported="true"
接收傳入的值:

bundle bundle = this.getintent().getextras();

// 防止直接啟動mainactivity時空指標閃退

if (bundle != null)

二、包名拉起(進入啟動頁)

intent intent = getpackagemanager().getlaunchintentforpackage("com.***.***");

if (intent != null)

3.使用url拉起

intent intent = new intent();

intent.setdata(uri.parse("csd:"));

//這裡intent當然也可傳遞引數,但是一般情況下都會放到上面的url中進行傳遞

intent.putextra("", "");

intent.setflags(intent.flag_activity_new_task);

startactivity(intent);

b中:manifest檔案需配置(注意:在原有intent-filter下方另外新增)

1.判斷b應用是否安裝

/**

* 檢查包是否存在

* @param packname

* @return

*/private boolean checkpackinfo(string packname) catch (packagemanager.namenotfoundexception e)

return packageinfo != null;

}

2.判斷b應用是否在後台執行並直接開啟

//activity完整名

string mainact = null;

//根據包名尋找

packagemanager pkgmag = context.getpackagemanager();

intent intent = new intent(intent.action_main);

intent.addcategory(intent.category_launcher);

intent.setflags(intent.flag_activity_reset_task_if_needed|intent.flag_activity_new_task);

listlist = pkgmag.queryintentactivities(intent,

packagemanager.get_activities);

for (int i = 0; i < list.size(); i++)

}if (textutils.isempty(mainact))

intent.setcomponent(new componentname(packagename, mainact));

return intent;

}public static context getpackagecontext(context context, string packagename) else catch (packagemanager.namenotfoundexception e)

}return pkgcontext;

}public static boolean openpackage(context context, string packagename)

return false;

}//根據包名檢測

if (checkpackinfo("com.***.***")) else

接受傳值跨登入操作:

舉個栗子:(使用handler進行操作)

if(getintent().ha***tra("***"))else

記錄檢查喚起另一手機中已安裝App

1 獲取應用列表再根據包名遍歷,但因許可權問題,很多時候無法獲取到已安裝應用列表 list list getpackagemanager getinstalledpackages packagemanager.get permissions stringbuilder stringbuilder n...

iOS App 喚醒另乙個App

網上也有講這塊的,感覺講得都不是很好。而且有一些細節根本沒有講清楚。這裡重寫整理一下相關知識點。ios有個特性就是應用將其自身 繫結 到乙個自定義url scheme上,該scheme用於從瀏覽器或其他應用中啟動本應用。常見的分享到第三方之間的跳轉都是基於scheme的。通過對比網頁鏈結來理解ios...

Android APP開啟另乙個APP完整邏輯實現

intent intent new intent intent.action main 知道要跳轉應用的包命與目標activity componentname componentname new componentname kuyu.com.x kuyu.com.x.login.welcomeact...