获取所有活动/packagename/apps名称

发布于 2025-01-27 12:51:14 字数 2555 浏览 1 评论 0原文

我想获取所有可以处理UPI意图的活动的列表。 或者 我想获取Chooser意图中显示的所有活动的所有活动列表。

Google Pay,Amazon Pay,Paytm等

例如, tkxv5.jpg“ alt =”钱包应用程序映像>

    void payUsingUpi() {

        Uri uri = Uri.parse("upi://pay").buildUpon().build();
        
        Intent upiPayIntent = new Intent();
        upiPayIntent.setAction(Intent.ACTION_VIEW);

        upiPayIntent.setData(uri);

        Intent chooser = Intent.createChooser(upiPayIntent, "Pay with");
        
        // check if intent resolves
        if (chooser.resolveActivity(getPackageManager()) != null) {
            activityLauncherForUpiPayements.launch(chooser);
        } else {
            Toast.makeText(this, "No UPI app found, please install one to continue", Toast.LENGTH_SHORT).show();
        }

    }

ActivityResultLauncher<Intent> activityLauncherForUpiPayements = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
        // Toast.makeText(WalletActivity.this, "returned from activty", Toast.LENGTH_SHORT).show();
        if (result.getResultCode() == Activity.RESULT_OK) {
            if (result.getData() != null) {
                String trxt = result.getData().getStringExtra("response");
                //Log.d("UPI", "onActivityResult: " + trxt);
                ArrayList<String> dataList = new ArrayList<>();
                dataList.add(trxt);
                upiPaymentDataOperation(dataList);
            } else {
                //Log.d("UPI", "onActivityResult: " + "Return data is null");
                ArrayList<String> dataList = new ArrayList<>();
                dataList.add("nothing");
                upiPaymentDataOperation(dataList);
            }
        } else {
            //Log.d("UPI", "onActivityResult: " + "Return data is null"); //when user simply back without payment
            ArrayList<String> dataList = new ArrayList<>();
            dataList.add("nothing");
            upiPaymentDataOperation(dataList);
        }
    });

我尝试了以下片段,其他 stackoverflow答案

PackageManager packageManager = getPackageManager();
List<ResolveInfo> result = packageManager.queryIntentActivities(chooser, 0);
for (ResolveInfo resolveInfo : result) {
    Toast.makeText(this, "" + resolveInfo.activityInfo.packageName, Toast.LENGTH_SHORT).show();
}

它给出了如下的输出:

Android android.system.ui.Chooser

,但我想获取Chooser弹出窗口中显示的所有活动或软件包名称或应用名称。

I want to get list of all the activities that can handle UPI intent.
OR
I want to get list of all activities that are displayed in Chooser intent for a upi intent.

e.g google pay, amazon pay, paytm etc

wallet apps image

    void payUsingUpi() {

        Uri uri = Uri.parse("upi://pay").buildUpon().build();
        
        Intent upiPayIntent = new Intent();
        upiPayIntent.setAction(Intent.ACTION_VIEW);

        upiPayIntent.setData(uri);

        Intent chooser = Intent.createChooser(upiPayIntent, "Pay with");
        
        // check if intent resolves
        if (chooser.resolveActivity(getPackageManager()) != null) {
            activityLauncherForUpiPayements.launch(chooser);
        } else {
            Toast.makeText(this, "No UPI app found, please install one to continue", Toast.LENGTH_SHORT).show();
        }

    }

ActivityResultLauncher<Intent> activityLauncherForUpiPayements = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
        // Toast.makeText(WalletActivity.this, "returned from activty", Toast.LENGTH_SHORT).show();
        if (result.getResultCode() == Activity.RESULT_OK) {
            if (result.getData() != null) {
                String trxt = result.getData().getStringExtra("response");
                //Log.d("UPI", "onActivityResult: " + trxt);
                ArrayList<String> dataList = new ArrayList<>();
                dataList.add(trxt);
                upiPaymentDataOperation(dataList);
            } else {
                //Log.d("UPI", "onActivityResult: " + "Return data is null");
                ArrayList<String> dataList = new ArrayList<>();
                dataList.add("nothing");
                upiPaymentDataOperation(dataList);
            }
        } else {
            //Log.d("UPI", "onActivityResult: " + "Return data is null"); //when user simply back without payment
            ArrayList<String> dataList = new ArrayList<>();
            dataList.add("nothing");
            upiPaymentDataOperation(dataList);
        }
    });

I have tried below snippet provided in other Stackoverflow answer

PackageManager packageManager = getPackageManager();
List<ResolveInfo> result = packageManager.queryIntentActivities(chooser, 0);
for (ResolveInfo resolveInfo : result) {
    Toast.makeText(this, "" + resolveInfo.activityInfo.packageName, Toast.LENGTH_SHORT).show();
}

it gave output like below:

android
android.system.ui.chooser

but I want to get all activities or package name or app name that were displayed in chooser pop-up.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文