यहां आपका समाधान चला जाता है। क्या आप ctx.getPackageName() के साथ बदल सकते हैं "packageNameToExclude" अपनी खुद की ऐप्लिकेशन को बहिष्कृत करना चाहते हैं
public static Intent shareExludingApp(Context ctx, String packageNameToExclude, String imagePath, String text) {
List<Intent> targetedShareIntents = new ArrayList<Intent>();
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("image/*");
List<ResolveInfo> resInfo = ctx.getPackageManager().queryIntentActivities(createShareIntent(text,new File(imagePath)), 0);
if (!resInfo.isEmpty()) {
for (ResolveInfo info : resInfo) {
Intent targetedShare = createShareIntent(text,new File(imagePath));
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[] {}));
return chooserIntent;
}
return null;
}
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;
}
यह वहाँ कुछ है कि में बनाया का उपयोग करना चाहिए मैं अपने फ़िल्टर्ड सूची वापस फ़ीड कर सकते हैं शेयर संवाद बनाने के लिए, या क्या मुझे सूची का उपयोग करके अपना खुद का संवाद बनाना है? यदि यह बाद वाला है तो आप एक संवाद में ऐप के आइकन कैसे दिखते हैं? धन्यवाद। –
cottonBallPaws
@littleFluffyKitty: आप अपने संवाद का उपयोग करेंगे (उदा।, 'AlertDialog.builder' और' setAdapter() ')। 'पैकेज प्रबंधक' आपको आइकन दे सकता है। Http://github.com/commonsguy/cw-advandroid/tree/master/Introspection/Launchalot/ – CommonsWare
देखें, यह वास्तव में सहायक है। क्या आपके पास कोई सुझाव है जो मेरे ऐप के विरुद्ध queryIntentActivities() से लौटाई गई सूची की तुलना/फ़िल्टर करने का सबसे अच्छा तरीका है? मैं पैकेज नाम का उपयोग करने के बारे में सोच रहा था, लेकिन क्या एक बेहतर तुलना है? – cottonBallPaws