簡體   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