簡體   English   中英

如何獲取已安裝的即時通訊應用程序列表?

[英]how to get list of installed instant messenger apps?

我的應用程序應該能夠通過WhatsApp,電子郵件,SMS等在TextView中發送文本。為此,我需要已安裝的Messging應用程序列表。 我用PackageManger嘗試過,但是我得到了所有應用程序。 如何僅獲取即時消息應用程序?

這是我列出已安裝應用程序的代碼:

PackageManager packageManager=this.getPackageManager(); 
    List<PackageInfo> applist=packageManager.getInstalledPackages(0);
    Iterator<PackageInfo> it=applist.iterator();
    while(it.hasNext()){
    PackageInfo pk=(PackageInfo)it.next();
    if(PackageManager.PERMISSION_GRANTED==(packageManager.checkPermission(Manifest.permission.INTERNET, pk.packageName)& packageManager.checkPermission(Manifest.permission.RECEIVE_SMS, pk.packageName))) //checking if the package is having INTERNET permission
    {
    myList.add(""+pk.applicationInfo.loadLabel(packageManager));
    }
    }

如果您的目標是冰淇淋三明治,則應使用ShareActionProvider 您可以在其中找到所需的共享任何方式的列表。

您還可以閱讀此android-developer-blogpost ,他們在其中解釋了如何通過意圖進行共享。 因此,例如您的電子郵件共享:

Intent intent=new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/plain");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

// Add data to the intent, the receiving app will decide what to do with it.
intent.putExtra(Intent.EXTRA_SUBJECT, “Some Subject Line”);
intent.putExtra(Intent.EXTRA_TEXT, “Body of the message, woot!”);

假設您設法獲得所需應用程序的列表,那么您將如何處理它們? 我認為您需要讓android向用戶展示應用程序列表,以便他們根據執行的操作來選擇要處理文本的應用程序。 幸運的是,這是Android中的內置功能。 這是我發送電子郵件的功能:

public static void StartEmailIntent (Context cx, String EmailAddress){
    Intent email = new Intent(Intent.ACTION_SEND);

    email.setType("plain/text");
    email.putExtra(Intent.EXTRA_EMAIL, new String[]{EmailAddress});

    cx.startActivity(Intent.createChooser(email, cx.getString(R.string.dlg_sendmail_selectortitle)));
}

如您所見,我將Intent.ACTION_SEND設置為操作,然后使用Intent.createChooser android根據Intent的類型和其他功能創建一個能夠處理該操作的應用程序列表。 改編短信,電話等其他操作並不難。您可以在此處了解更多信息,將內容發送到其他應用

希望這可以幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM