/ / Android, jak odfiltrować udostępnianie społecznościowe, mając tylko Facebooka i Twittera? - Android, Facebook, Twitter, sieci społecznościowe

Android, Jak filtrować udostępnianie społecznościowe za posiadanie tylko Facebooka i Twittera? - Android, Facebook, Twitter, social networking

W moim projekcie muszę udostępnić trochę informacji na Facebooku i Twitterze. Obecnie, gdy używasz następujących kodów, Android oferuje listę wszystkich sieci społecznościowych, które masz w telefonie komórkowym.

public void share(String subject,String text) {
final Intent intent = new Intent(Intent.ACTION_SEND);

intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, text);
startActivity(Intent.createChooser(intent, "Share with:"));
}

Wymagane jest tylko pokazanie Facebooka i Twittera na tej liście. Czy można filtrować tę listę, aby mieć te dwa?

wprowadź opis obrazu tutaj

Odpowiedzi:

8 dla odpowiedzi № 1
    Button btnshare=(Button)rootView.findViewById(R.id.btnshare);
btnshare.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Share(getShareApplication(),"Hello Text Share");
}
});

private List<String> getShareApplication(){
List<String> mList=new ArrayList<String>();
mList.add("com.facebook.katana");
mList.add("com.twitter.android");
mList.add("com.google.android.gm");
return mList;

}
private void Share(List<String> PackageName,String Text) {
try
{
List<Intent> targetedShareIntents = new ArrayList<Intent>();
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("text/plain");
List<ResolveInfo> resInfo = getActivity().getPackageManager().queryIntentActivities(share, 0);
if (!resInfo.isEmpty()){
for (ResolveInfo info : resInfo) {
Intent targetedShare = new Intent(android.content.Intent.ACTION_SEND);
targetedShare.setType("text/plain"); // put here your mime type
if (PackageName.contains(info.activityInfo.packageName.toLowerCase())) {
targetedShare.putExtra(Intent.EXTRA_TEXT,Text);
targetedShare.setPackage(info.activityInfo.packageName.toLowerCase());
targetedShareIntents.add(targetedShare);
}
}
Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Share");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
startActivity(chooserIntent);
}
}
catch(Exception e){
e.printStackTrace();
}
}

3 dla odpowiedzi № 2

Możesz zapytać o działania, które pasują docel, a następnie filtruj według nazw pakietów aplikacji na Twitterze i Facebooku, ponieważ nazwa pakietu aplikacji nigdy się nie zmienia. Następnie umieść te wyniki w niestandardowym oknie dialogowym.

Używając czegoś takiego, możesz filtrować wyniki według nazwy pakietu:

final PackageManager pm = context.getPackageManager();
final Intent intent = new Intent(Intent.ACTION_SEND);
List<ResolveInfo> riList = pm.queryIntentActivities(intent, 0);
for (ResolveInfo ri : riList) {
ActivityInfo ai = ri.activityInfo;
String pkg = ai.packageName;
if (pkg.equals("com.facebook.katana") || pkg.equals("com.twitter.android")) {

// Add to the list of accepted activities.

// There"s a lot of info available in the
// ResolveInfo and ActivityInfo objects: the name, the icon, etc.

// You could get a component name like this:
ComponentName cmp = new ComponentName(ai.packageName, ai.name);
}
}

0 dla odpowiedzi № 3

Nie wiem, czy o to ci chodzi, ale możesz użyć wbudowanego menu udostępniania Androida ...

Możesz udostępnić adres URL do Facebook, Twitter, Gmail i więcej (o ile aplikacje są zainstalowane na twoim urządzeniu) za pomocą Intents:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_SUBJECT, "Sharing URL");
i.putExtra(Intent.EXTRA_TEXT, "http://www.url.com");
startActivity(Intent.createChooser(i, "Share URL"));

Nie zapomnij wstawić tego do pliku Manifest.xml:

<activity android:name="ShareLink">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<meta-data/>
</activity>

Mam nadzieję że to pomoże!