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