2016-10-07 12 views
1

私のアプリケーションのコンテンツを他のアプリケーションと共有したいのですが。私はまた、自分のアプリケーションのマニフェストファイルに以下のインテントフィルタを定義したこの共有アプリケーションをshare intent chooserリストから削除する

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, title); 
intent.putExtra(Intent.EXTRA_TEXT, linkUrl); 
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
((Activity) mContext).startActivityForResult(
      Intent.createChooser(intent, mContext.getString(R.string.share_via) + "…"), ConstantVariables.CONTENT_SHARING_CODE) 

については、以下のコードを使用しました。

<intent-filter> 
      <action android:name="android.intent.action.SEND" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data android:mimeType="image/*" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data android:mimeType="text/plain" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND_MULTIPLE" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data android:mimeType="image/*" /> 
     </intent-filter> 

したがって、アプリケーションからコンテンツを共有するたびに、このコンテンツを受け取ることができるすべてのアプリケーションをリストするアプリケーション選択が表示されます。このリストでは、私のアプリケーションもリストに載っていますが、自分自身のアプリケーションからコンテンツを共有するときは、アプリケーションのリストを表示したくありません。

助けてもらえますか?どうすれば実現できますか?

ありがとうございました。

答えて

0

は...私の以前のanswer

public static void shareExludingApp(Context ctx, String packageNameToExclude, android.net.Uri imagePath, String text) { 

      List<Intent> targetedShareIntents = new ArrayList<Intent>(); 
      Intent share = new Intent(android.content.Intent.ACTION_SEND); 
      share.setType("image/*"); 
      File file = new File(imagePath.getPath()); 
      List<ResolveInfo> resInfo = ctx.getPackageManager().queryIntentActivities(createShareIntent(text, file), 0); 
      if (!resInfo.isEmpty()) { 
       for (ResolveInfo info : resInfo) { 
        Intent targetedShare = createShareIntent(text, file); 

        if (!info.activityInfo.packageName.equalsIgnoreCase(packageNameToExclude)) { 
         targetedShare.setPackage(info.activityInfo.packageName); 
         targetedShareIntents.add(targetedShare); 
        } 
       } 

       Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), 
         "Select app to share"); 
       chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, 
         targetedShareIntents.toArray(new Parcelable[]{})); 
       ctx.startActivity(chooserIntent); 
      } 

     } 

     private static Intent createShareIntent(String text, File file) { 
      Intent share = new Intent(android.content.Intent.ACTION_SEND); 
      share.setType("image/*"); 
      if (text != null) { 
       share.putExtra(Intent.EXTRA_TEXT, text); 
      } 
      share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); 
      return share; 
     } 
から取られた以下のコードを見て
関連する問題