當前位置:首頁 » 安卓系統 » android判斷是否安裝支付寶

android判斷是否安裝支付寶

發布時間: 2023-12-24 02:43:08

『壹』 Android開發中App支付寶三方登錄

在支付寶授權登錄之前,有的需要先判斷一下手機上是否安裝支付寶應用,

在APP申請審核之後會自拆畝並動生成app_id,pid,
RSA_PRIVATE 為公鑰,RSA2_PRIVATE為私鑰

支付寶登錄授權官旅跡方文檔耐歷地址:
https://opendocs.alipay.com/open/218/105325

『貳』 Android 讀取已安裝應用列表需要申請許可權嗎

這里我先公布下答案:不需要

我要實現讀取已安裝應用列表功能,Google了一下,可以通過PackageManager.getInstalledPackages()方法獲取,我手頭有三台手機,分別是華為Nexus 5X、Meta9、Vivo X20,寫了個Demo在這三個手機上進行測試,測試結果如下:

我沒有申請任何許可權,Vivo X20為什麼會出現申請讀取已安裝應用列表許可權對話框呢?為什麼是有時候能獲取到全部已安裝應用列表,有時候獲取不到?

Google一下,看有沒有和我類似的問題,找到了一篇:

Android 如何完整的獲取到用戶已安裝應用列表

這篇文章中,作者有個結論:『國內部分廠商比如華為、oppo,他們將」獲取用戶已安裝應用列表」的許可權暴露給了用戶,讓用戶可以自由決定允許或者禁止應用訪問該信息。』

Nexus 5X中沒有找到讀取已安裝應用列表許可權。

這里有提到華為,我打開meta 9的許可權列表看了一下有讀取已安裝應用列表許可權,我的Demo對應的這個許可權默認是打開的,所以meta 9是能獲取到全部已安裝應用列表。

再看下Vivo X20,在打開Demo的時候彈出申請許可權對話框了,說明Vivo也屬於那部分國內廠商,由於在彈出申請讀取已安裝應用列表許可權對話框時,我允許了,所以打開Vivo X20的讀取已安裝應用列表許可權時,這里的狀態是打開的,但是,點進去一看,暗藏玄機,這里還有一個 安全等級,分為高、中、低 ,我的Demo屬於高,看看其他應用呢?微信安全等級屬於低、支付寶屬於低,讀取不到應用列表難道和這個 安全等級 有關系嗎?

我手動將我的Demo的 安全等級 調整為低,再打開Demo,奇跡發生了,沒有彈出申請讀取已安裝應用列表許可權對話框,並且獲取到了全部已安裝應用列表。

Android 讀取已安裝應用列表不需要申請許可權,因為Android許可權列表中沒有許可權是用於讀取已安裝應用列表的。

如果想要獲取Vivo X20這種有 安全等級 的手機中的已安裝應用列表,由於這種 安全等級 我們無法決定,所以只能通過反向查找的方式,即通過包名能否找到應用,從而判斷是否安裝了某應用。

這種方法獲取不到全部已安裝應用列表,只能獲取到指定的應用。

如果有比較了解許可權的同學覺得我有寫的不對的地方,或者對於獲取已安裝應用列表有更好的方法,歡迎留言交流!

『叄』 Android 是怎麼判斷某個APK文件是否已經安裝

Android系統中,判斷應用有無安裝有兩種方式:

1.根據包名判斷,以下為判斷代碼:
public boolean checkApkExist(Context context, String packageName) {
if (packageName == null || 「」.equals(packageName))
return false;
try {
ApplicationInfo info = context.getPackageManager()
.getApplicationInfo(packageName,
PackageManager.GET_UNINSTALLED_PACKAGES);
return true;
} catch (NameNotFoundException e) {
return false;
}
}

2. 根據Intent判斷,以下為判斷代碼:
public boolean checkApkExist(Context context, Intent intent) {
List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent, 0);
if(list.size() > 0){
return true;
}
return false;
}
public boolean checkApkExist(Context context, String packageName) {
if (packageName == null || 「」.equals(packageName)) return false;
try {
ApplicationInfo info = context.getPackageManager() .getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES); return true;
} catch (NameNotFoundException e) { return false; }
}
public boolean checkApkExist(Context context, Intent intent) {
List<ResolveInfo> list = context.getPackageManager()
.queryIntentActivities(intent, 0);
if (list.size() > 0) {
return true;
}
return false;
}

『肆』 Android開發:檢測手機上是否安裝該App

判斷手機已安裝某程序的方法:

『伍』 android ping++ 怎麼調用支付寶

在技術集成之前,商戶需要進行注冊,並簽約安全支付服務。簽約成功後可獲取支付寶分配的合作商戶ID(PartnerID),賬戶ID(SellerID),調用介面時使用。

支付細節的實現,主要通過支付寶提供的一個支付安全服務安裝包alipay_plugin_20120428msp.apk,首次使用,首先檢查是否安裝此插件,沒有會提示安裝。具體的支付細節,在這個插件內完成。大部分的支付平台也都是採用的這種方式。

調用支付寶的介面進行支付,主要有以下幾個步驟

1. 將商戶ID,收款帳號,外部訂單號,商品名稱,商品介紹,價格,通知地址封裝成訂單信息

2. 對訂單信息進行簽名

3. 將訂單信息,簽名,簽名方式封裝成請求參數

4. 調用pay方法。

主要流程圖如下:

支付介面pay方法的調用如下:

。。。

// start pay for this order.

// 根據訂單信息開始進行支付

try {

// prepare the order info.

// 准備訂單信息

String orderInfo = getOrderInfo(position);

// 這里根據簽名方式對訂單信息進行簽名

String signType = getSignType();

String strsign = sign(signType, orderInfo);

Log.v("sign:", strsign);

// 對簽名進行編碼

strsign = URLEncoder.encode(strsign);

// 組裝好參數

String info = orderInfo + "&sign=" + "\"" + strsign + "\"" + "&"

+ getSignType();

Log.v("orderInfo:", info);

// start the pay.

// 調用pay方法進行支付

MobileSecurePayer msp = new MobileSecurePayer();

boolean bRet = msp.pay(info, mHandler, AlixId.RQF_PAY,this);if (bRet) {

// show the progress bar to indicate that we have started

// paying.

// 顯示「正在支付」進度條

closeProgress();

mProgress = BaseHelper.showProgress(this,null, "正在支付",false,

true);

} else

;

} catch (Exception ex) {

Toast.makeText(AlixDemo.this, R.string.remote_call_failed,

Toast.LENGTH_SHORT).show();

}

。。。

/**

* 向支付寶發送支付請求

*

* @param strOrderInfo

* 訂單信息

* @param callback

* 回調handler

* @param myWhat

* 回調信息

* @param activity

* 目標activity

* @return

*/

public boolean pay(final String strOrderInfo,final Handler callback,

final int myWhat, final Activity activity) {

if (mbPaying)

return false;

mbPaying = true;//

mActivity = activity;// bind the service.

// 綁定服務

if (mAlixPay ==null) {

// 綁定安全支付服務需要獲取上下文環境,

// 如果綁定不成功使用mActivity.getApplicationContext().bindService

// 解綁時同理

mActivity.getApplicationContext().bindService(

new Intent(IAlixPay.class.getName()),mAlixPayConnection,

Context.BIND_AUTO_CREATE);

}

// else ok.// 實例一個線程來進行支付

new Thread(new Runnable() {

public void run() {

try {

// wait for the service bind operation to completely

// finished.

// Note: this is important,otherwise the next mAlixPay.Pay()

// will fail.

// 等待安全支付服務綁定操作結束

// 注意:這里很重要,否則mAlixPay.Pay()方法會失敗

synchronized (lock) {

if (mAlixPay ==null)

lock.wait();

}// register a Callback for the service.

// 為安全支付服務注冊一個回調

mAlixPay.registerCallback(mCallback);// call the MobileSecurePay service.

// 調用安全支付服務的pay方法

String strRet =mAlixPay.Pay(strOrderInfo);

BaseHelper.log(TAG,"After Pay: " + strRet);// set the flag to indicate that we have finished.

// unregister the Callback, and unbind the service.

// 將mbPaying置為false,表示支付結束

// 移除回調的注冊,解綁安全支付服務

mbPaying = false;

mAlixPay.unregisterCallback(mCallback);

mActivity.getApplicationContext().unbindService(

mAlixPayConnection);// send the result back to caller.

// 發送交易結果

Message msg = new Message();

msg.what = myWhat;

msg.obj = strRet;

callback.sendMessage(msg);

} catch (Exception e) {

e.printStackTrace();// send the result back to caller.

// 發送交易結果

Message msg = new Message();

msg.what = myWhat;

msg.obj = e.toString();

callback.sendMessage(msg);

}

}

}).start();return true;

}調用了支付服務之後,有兩種方式返回交易結果:

1. 支付結果作為介面返回的字元串返回。返回的參數包含在result字元串中,具體再進行解析。

2. 支付寶伺服器通知。商戶需要提供一個http協議的介面,包含在參數里傳遞給安全支付,即notify_url。支付寶伺服器在支付完成後,會用POST方法調用notufy_url,以xml為數據格式傳輸支付結果。需要注意的是,商戶伺服器收到支付寶發的通知之後,需要返回一個純字元串「success」,不然支付寶的伺服器會持續調用七次回調url提供的介面。

『陸』 Android判斷是否安裝某App

開發過程中會遇到跳轉其他App的情況,諸如支付寶支付跳轉、更新跳轉等。跳轉之前需要判斷手機是否安裝該App,以下以應用寶為例。

熱點內容
怎麼用安卓手機查蘋果的序列號 發布:2024-11-29 06:21:08 瀏覽:507
r11s原始密碼是多少 發布:2024-11-29 05:52:20 瀏覽:79
c語言枚舉法 發布:2024-11-29 05:50:58 瀏覽:125
大數據系統如何配置 發布:2024-11-29 05:48:44 瀏覽:89
連戰訪問西安小學 發布:2024-11-29 05:45:03 瀏覽:316
怎麼編譯原生安卓手機 發布:2024-11-29 05:44:28 瀏覽:193
java代碼編譯java文件 發布:2024-11-29 05:44:27 瀏覽:208
如何部署遠程伺服器 發布:2024-11-29 05:34:37 瀏覽:523
紅米系統存儲與手機存儲 發布:2024-11-29 05:33:55 瀏覽:198
qt反編譯工具 發布:2024-11-29 05:29:31 瀏覽:480