当前位置:首页 » 安卓系统 » 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,以下以应用宝为例。

热点内容
python外包 发布:2024-11-29 06:49:11 浏览:424
怎么用安卓手机查苹果的序列号 发布: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