700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android 跳转到华为钱包 小米钱包 Samsung Pay OPPO钱包 魅族钱包主页面

Android 跳转到华为钱包 小米钱包 Samsung Pay OPPO钱包 魅族钱包主页面

时间:2021-01-31 20:41:31

相关推荐

Android 跳转到华为钱包 小米钱包 Samsung Pay OPPO钱包 魅族钱包主页面

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

package com.yongbo.wallet;import ponentName;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);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。