1. 程式人生 > >如何在自己的應用中開啟支付寶客戶端

如何在自己的應用中開啟支付寶客戶端

在做Android程式的過程中,我們經常需要在自己的專案中開啟其他軟體,通用的方法如下:
1.在程式你中通過程式碼來檢視手機上已安裝的軟體的包名;
2.通過該應該的包名來開啟該軟體。
獲取已安裝軟體的包名的程式碼如下:

PackageManager packageManager 
    =   this.getApplicationContext().getPackageManager();
List<ApplicationInfo> lists 
    = packageManager.getInstalledApplications(0);
for(ApplicationInfo appInfo : lists) {
    if(appInfo != null) {
        Log.i
("TAG", "packageName:" + appInfo.packageName); } }

通過Context的getPackageManager()方法來獲得PackageManager物件,在通過PackageManager的getInstalledApplication()方法獲得已安裝應用的資訊,這些已安裝的應用資訊儲存在ApplicationInfo這個Model中,其中的成員變數packageName就是已安裝應用的包名資訊。可是我在我的手機上居然找不到支付寶客戶端的包名,因為我想著支付寶怎麼的包名中怎麼也會包含alibaba或者alipay這兩個字串吧,在怎麼也包含pay這個字串吧,檢索了一下,居然找不到,這是我獲得手機上已安裝的應用的包名,原來支付寶客戶端的包名就藏在裡面:

這裡寫圖片描述

原來支付寶的包名是com.eg.android.AlipayGphone,那麼知道了包名之後,我們就可以在自己的應用程式中開啟支付寶了,完整程式碼如下:

try {
    PackageManager packageManager 
        = this.getApplicationContext().getPackageManager();
    Intent intent = packageManager.
        getLaunchIntentForPackage("com.eg.android.AlipayGphone");
    startActivity(intent);
 }catch
(Exception e) { String url = "https://ds.alipay.com/?from=mobileweb"; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); startActivity(intent); }

為什麼要加try…catch呢,因為如果使用者的手機上萬一沒有安裝支付寶客戶端,就可以跳轉到支付寶的下載頁面,讓使用者進行下載。