最近做的一个金融项目中有一个跳转到手机自带的钱包APP的首页的需求,咋一看这还不简单,但是网上一搜资料特别少,连华为钱包、小米钱包、SamsungPay这些应用的包名都找不到,就更别说这些应用的主页面的全路径了。最终经过真机连通Android Studio 查看日志才获取这些关键信息,以下是实现的核心代码,请诸位参阅!

package com.yongbo.wallet;import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.widget.Button;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private static final String PKG_HUAWEI_PAY = "com.huawei.wallet";private static final String PKG_XIAOMI_PAY = "com.mipay.wallet";private static final String PKG_SAMSUNG_PAY = "com.samsung.android.spay";private static final String PKG_OPPO_PAY = "com.coloros.wallet";private static final String PKG_MEIZU_PAY = "com.meizu.flyme.wallet";private static final String HOME_HUAWEI_PAY = "com.huawei.wallet.view.MainActivity";private static final String HOME_XIAOMI_PAY = "com.mipay.wallet.ui.MipayEntryActivity";private static final String HOME_SAMSUNG_PAY = "com.samsung.android.spay.ui.SpayMainActivity";//    private static final String HOME_OPPO_PAY = "com.nearme.wallet.main.WalletIndexActivity"; // 会报安全异常导致闪退private static final String HOME_OPPO_PAY = "com.nearme.wallet.SplashActivity";private static final String HOME_MEIZU_PAY = "com.meizu.flyme.wallet.activity.WalletTabActivity";private Button btn_wallet;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn_wallet = findViewById(R.id.btn_wallet);btn_wallet.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (isAvilible(MainActivity.this, PKG_HUAWEI_PAY)) {jumpToWallet(PKG_HUAWEI_PAY, HOME_HUAWEI_PAY);} else if (isAvilible(MainActivity.this, PKG_XIAOMI_PAY)) {jumpToWallet(PKG_XIAOMI_PAY, HOME_XIAOMI_PAY);} else if (isAvilible(MainActivity.this, PKG_SAMSUNG_PAY)) {jumpToWallet(PKG_SAMSUNG_PAY, HOME_SAMSUNG_PAY);} else if (isAvilible(MainActivity.this, PKG_OPPO_PAY)) {jumpToWallet(PKG_OPPO_PAY, HOME_OPPO_PAY);} else if (isAvilible(MainActivity.this, PKG_MEIZU_PAY)) {jumpToWallet(PKG_MEIZU_PAY, HOME_MEIZU_PAY);} else {showDialog();}}});}private void jumpToWallet(String packageName, String mainClassPath) {Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);ComponentName componentName = new ComponentName(packageName, mainClassPath);intent.setComponent(componentName);startActivity(intent);}public void showDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setMessage("您的设备尚未安装钱包应用!");builder.setTitle("提示");builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}/*** 检查手机上是否安装了指定的软件** @param context* @param packageName:应用包名* @return*/private boolean isAvilible(Context context, String packageName) {//获取packagemanagerfinal PackageManager packageManager = context.getPackageManager();//获取所有已安装程序的包信息List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);//用于存储所有已安装程序的包名List<String> packageNames = new ArrayList<String>();//从pinfo中将包名字逐一取出,压入pName list中if (packageInfos != null) {for (int i = 0; i < packageInfos.size(); i++) {String packName = packageInfos.get(i).packageName;packageNames.add(packName);}}//判断packageNames中是否有目标程序的包名,有TRUE,没有FALSEreturn packageNames.contains(packageName);}
}

Android 跳转到华为钱包、小米钱包、Samsung Pay、OPPO钱包、魅族钱包主页面相关推荐

  1. 判断当前的机型(华为,小米,vivo,oppo,魅族等)

    全部转换为小写,因为有的机型显示的大小写不规定 String manufacturer = Build.MANUFACTURER;if (manufacturer != null && ...

  2. Android刘海屏适配全方案(华为、小米、Vivo、Oppo)

    前言 目前市面上的刘海屏和水滴屏手机越来越多了,颜值方面是因人而异,有的人觉得很好看,也有人觉得丑爆了,我个人觉得是还可以.但是作为移动开发者来说,这并不是一件好事,越来越多异形屏手机的出现意味着我们 ...

  3. Android 项目借用华为、小米、VIVO、OPPO等远程真机调试

    对于Android 项目,模拟器不够用怎么办?借用华为.小米.VIVO.OPPO等远程真机调试. 免费 华为远程真机云调试 . 免费 小米云测平台远程真机租用 . 免费 VIVO 云测平台远程真机 . ...

  4. Android 推送集成华为,小米,友盟

    公司的 app 一直使用的是极光推送,最近反馈比较多的是推送消息收不到,看来需要找新的推送服务了,在国内目前手机品牌占有率比较多的是华为和小米,且这两家都有自己的推送服务,同时一个合作的友商说他们使用 ...

  5. 华为和小米比拼性价比,OPPO和vivo再被诟病低配高价

    近日华为先发布了高性价比5G手机畅享Z,随后小米发布了性价比更高的5G手机红米10X,两家手机企业将5G手机的价格推低到新的低价纪录,相比之下之前曾深入性价比手机市场的OPPO和vivo却犹豫不决,5 ...

  6. android p小米钱包,Android 跳转到华为钱包、小米钱包、Samsung Pay主页面-博客

    最近做的一个金融项目中有一个跳转到手机自带的钱包APP的首页的需求,咋一看这还不简单,但是网上一搜资料特别少,连华为钱包.小米钱包.SamsungPay这些应用的包名都找不到,就更别说这些应用的主页面 ...

  7. php 判断 小米 手机浏览器,华为、小米、OPPO和vivo手机浏览器发布自查整改公告...

    华为.小米.OPPO和vivo手机浏览器发布自查整改公告 10月27日,华为.小米.OPPO和vivo四家手机浏览器均在首屏位置发布了自查整改公告.公告称,自即日起至11月9日,对存在的网络传播秩序问 ...

  8. 华为与小米在印度市场翻倍增长,两者会重演国内市场之争么?

    市调机构发布counterpoint发布的数据,指在印度智能手机市场小米同比增长翻倍巩固了市场份额第一的位置,华为同样取得了翻倍增长首次进入市场份额前五名. counterpoint发布的数据,今年一 ...

  9. Android接入极光推送,接入华为,小米,OPPO,VIVO厂商通道

    极光推送作用: 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度.提高应用的留存率 主要作用: 保持与服 ...

最新文章

  1. 医疗安全监控与检测平台WattsUpDoc
  2. MSN8.0测试邀请发放
  3. OpenCV基本线性变换轨迹栏的实例(附完整代码)
  4. 两种过年烟花,你喜欢哪一种(HTML+CSS+JS)
  5. 【Alpha】第二次Scrum meeting
  6. 《ASP.NET Core 与 RESTful API 开发实战》-- (第10章)-- 读书笔记
  7. Spring Boot中mapper包所放位置的配置
  8. 文本挖掘预处理之TF-IDF
  9. 华为机试——质数因子
  10. mysql case默认_MySQL知识整理10.1—存储过程和函数
  11. LeetCode 279. Perfect Squares
  12. python-scrapy框架学习笔记
  13. Dahlia:一个现代化的 React 框架
  14. Delphi源码网站
  15. FPGA学习: Verilog刷题记录(16)
  16. 华为“最青睐”的10所大学,有你的大学么?
  17. SEO个人整理全套学习资料
  18. Chrome 开发者工具新功能-网络面板新增载荷(Payload)边栏
  19. 服务器系统2012浏览器,关闭Windows 2012系统IE浏览器”增强的安全配置已启用”问题 | 老左笔记...
  20. 乐讯机器人精简版2016迎春版【隆重发布】

热门文章

  1. 多多自走棋6月份几次对局分析
  2. 电脑录屏卡顿掉帧是什么原因 电脑录屏卡顿掉帧怎么解决
  3. Fiddler Everywhere 使用介绍
  4. 毕业设计 单片机循迹机器人小车
  5. 虚存的用法计算机组成原理,计算机组成原理_第8讲:虚拟存储-2015秋.pdf
  6. 会声会影如何新建html项目,如何使用即时项目模板-会声会影中文官网
  7. physxloader.dll x86_缺少PhysXLoader.dll及未知错误解决办法
  8. 揭秘物联网卡骗局!如何选择合适的物联网卡!!
  9. Android网络编程 HttpUrlConnection HttpClient AsyncTask
  10. 【python】二元一次方程求解python源代码