1

私のアプリでは、WAV ファイルを電子メールの添付ファイルとして送信しています。電子メール チューザーを表示している間、Indent.createChooser インテントは、電子メール、gmail、facebook、skype、bluetooth、およびその他の不要なオプションを一覧表示します。メールと Gmail のオプションのみを表示したい。私はそれを行う方法がわかりません?重複する可能性のある質問の前に、次のリンクを見ましたが、役に立ちません。

  1. 録音した音声をメールで送信するには?
  2. 電子メール オプションのみを表示する Android Intent Chooser

上記のリンクで述べたように、私は試しsendIntent.setType("audio/rfc822");ました。やはり同じ表示です。

私のコードサンプル:

    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "xxxxxxxxxxxx");
    sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://" + f.getAbsolutePath())); 
    sendIntent.setType("audio/wav");
    startActivity(Intent.createChooser(sendIntent, "Email file"));

更新された質問:

インストールされているアプリを一覧表示するサンプルを実装し、リスト ビューの項目をクリックします。Gmail/メール アプリを起動し ます。「この操作を実行できるアプリケーションはありません」と表示されます。

リスト ビューにアプリを一覧表示するには:

-----------------
List<PackageInfo> packs = packageManager.getInstalledPackages(0);
  for(int i = 0; i < packs.size(); i++) {
     PackageInfo p = packs.get(i);
     ApplicationInfo a = p.applicationInfo;
     if ((includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) {
        continue;
     }
     App app = new App();
     app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
     app.setPackageName(p.packageName);
     app.setVersionName(p.versionName);
     app.setVersionCode(p.versionCode);
     app.setInstallDir(p.applicationInfo.sourceDir);
     app.setInstallSize(calculateSize(app.getInstallDir()));
     CharSequence description = p.applicationInfo.loadDescription(packageManager);
     app.setDescription(description != null ? description.toString() : "");
     apps.add(app);
     -----------

onclick アイテム イベントは次のとおりです。

                Intent sendIntent = new Intent(getPackageManager().getLaunchIntentForPackage(app.getPackageName()));
                sendIntent.putExtra(Intent.EXTRA_SUBJECT, "xxxxxxxxxxxx");
                sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://" + Environment.getExternalStorageDirectory().getPath()+"/Music/SalsaFav.mp3")); 
                sendIntent.setType("audio/wav");
                startActivity(Intent.createChooser(sendIntent, "Email file"));

私を助けてください。

4

2 に答える 2

0

おそらく、独自のポップアップ アクティビティを作成し、そのアクティビティにインテントを送信する必要があります。そのポップアップ アクティビティで、好みのコミュニケーション チャネルをリストする必要があります。通信チャネルをクリックすると、ポップアップ アクティビティが関連するアクティビティを開始します。あなたが見ることができる他のものは、あなたの仕事を成し遂げる方法についていくつかの光を示すこの投稿です:)

于 2012-09-03T11:45:20.287 に答える
0

次の 2 つの選択肢があります。

  • PackageManagerを queryIntentActivities 関数で使用し、そこからフィルタリングして、独自のダイアログを表示します

ここで、実際に Intent を処理できるアプリケーションを取得します。

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "xxxxxxxxxxxx");
sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse("file://" + f.getAbsolutePath())); 
sendIntent.setType("audio/wav");

// Get the Activities which can handle the Intent
List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(sendIntent, 0);

// Loop on your Activities, filter and construct your own list here
if (!resolveInfos.isEmpty()){
  for (ResolveInfo resolveInfo : resolveInfos) {
  // Filter here !

  }
}
  • getApplicationInfoを使用して既知のパッケージ名のリストを使用して PackageManager をクエリし、既存のアプリケーションに従ってダイアログを構築します。

最初のソリューションがあなたのニーズに最も合っていると思います

于 2012-09-03T11:52:59.327 に答える