[英]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.