繁体   English   中英

显示 Android 手机中安装的所有消息应用程序

[英]Display all messaging apps installed in Android phone

我想显示用户在其手机中安装的所有消息传递应用程序。 我期待的列表是,WhatsApp、Facebook messenger、Viber、Slack、Skype、WeChat 等(如果已安装)。 因此,到目前为止,我已经尝试通过以下代码获取 Phone 中的所有应用程序:

        val pm: PackageManager = context!!.packageManager
        val i = Intent(Intent.ACTION_MAIN)
        i.addCategory(Intent.CATEGORY_LAUNCHER)
        val lst = pm.queryIntentActivities(i, 0)

        for (resolveInfo in lst) {
            Log.d(
                "Test",
                "New Launcher Found: " + resolveInfo.activityInfo.packageName
            )

这只会给我 Slack 应用程序,但不会给我其他消息应用程序。 我感觉它与 Google 文档中提到的 MIME 类型有关。

text/*, senders will often send text/plain, text/rtf, text/html, text/json
image/*, senders will often send image/jpg, image/png, image/gif
video/*, senders will often send video/mp4, video/3gp

但我不知道如何使用这些信息。 任何帮助,将不胜感激。 蒂亚!

在创建意图时添加ACTION_SENDTO作为操作参数,您应该会看到能够处理消息/短信等的应用程序列表。

val intent = Intent(Intent.ACTION_SENDTO) // get list of activities that can handle this type of intent val lst = pm.queryIntentActivities(intent, 0)

这里的包名指的是-apps package名

   fun appinstalled(){
    var app_names = mutableListOf<String>()
    val app_package = mutableListOf<String>()
    val packagelist: MutableList<PackageInfo> =  packageManager.getInstalledPackages(0)
    var appname : String
    var packname : String


    for (i in packagelist.indices) {
        val packageinfo : PackageInfo= packagelist[i]


        appname=packageinfo.applicationInfo.loadLabel(packageManager).toString()
        packname=packageinfo.packageName
        app.add(appname)
        app-package.add(packname)




    }

这将是安装在用户设备中的应用程序列表以及它们的 package 名称。 在此之后将这些列表附加到 Listview 及其适配器并完成所有操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM