2012-05-08 21 views
0

私のアプリはWhatsApp、Email、SMSなどを介してTextViewでテキストを送信できるはずです。そのためには、インストールされているMessingアプリケーションのリストが必要です。私は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)); 
    } 
    } 
+1

アプリを修飾することになる(英語で)ルールを提案...あなたはSending Content to Other Apps

・ホープ、このことができ、ここでそれについての詳細を読むことができるなど、SMS、電話の呼び出しのような他のアクションを適応させることが難しいことではありません"インスタントメッセンジャーアプリ"としてあなたができるなら、コードで実装して実行することができます。もしそうでなければ... –

答えて

0

は、あなたが欲しいのアプリケーションのリストを取得するために管理はず、そして何があなたがそれらをどうするつもりですか? あなたは、実行されたアクションに応じて、テキストを処理するアプリケーションを選択するためにユーザーにアプリケーションのリストを提示する必要があると思います。幸いにも、これは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アンドロイドとしています見ることができるように基づいて、そのアクションを処理することが可能なアプリケーションのリストを作成し、インテントのタイプとエクストラ。

+0

ありがとう。あなたは最高です! – user1367269

0

あなたはアイスクリームサンドイッチをターゲットにしている場合は、ShareActionProviderに行く必要があります。そこには、あなたが望むものを何でも共有するための希望のリストがあります。

また、android-developer-blogpostを読んで、意図を介して共有する方法を説明することもできます。だからあなたのemailsharingため例えば:

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!”); 
関連する問題