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