Мне нужно разработать приложение с функцией совместного использования. Я должен поделиться в Facebook, Twitter, электронной почте и, возможно, в других сервисах.
Как я могу это сделать? Есть ли в сети библиотека? Для разработки iOS был ShareKit, но для Android?
Спасибо :)
доля на доле Facebook
private ShareDialog shareDialog;
shareDialog = new ShareDialog((AppCompatActivity) context);
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
Log.e("TAG","Facebook Share Success");
logoutFacebook();
}
@Override
public void onCancel() {
Log.e("TAG","Facebook Sharing Cancelled by User");
}
@Override
public void onError(FacebookException error) {
Log.e("TAG","Facebook Share Success: Error: " + error.getLocalizedMessage());
}
});
if (ShareDialog.canShow(ShareLinkContent.class)) {
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setQuote("Content goes here")
.setContentUrl(Uri.parse("URL goes here"))
.build();
shareDialog.show(linkContent);
}
AndroidManifest.xml
<!-- Facebook Share -->
<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="com.facebook.app.FacebookContentProvider{@string/facebook_app_id}"
android:exported="true" />
<!-- Facebook Share -->
dependencies {
implementation 'com.facebook.android:facebook-share:[5,6)' //Facebook Share
}
в Твиттере
public void shareProductOnTwitter() {
TwitterConfig config = new TwitterConfig.Builder(this)
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(new TwitterAuthConfig(getResources().getString(R.string.twitter_api_key), getResources().getString(R.string.twitter_api_secret)))
.debug(true)
.build();
Twitter.initialize(config);
twitterAuthClient = new TwitterAuthClient();
TwitterSession twitterSession = TwitterCore.getInstance().getSessionManager().getActiveSession();
if (twitterSession == null) {
twitterAuthClient.authorize(this, new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
TwitterSession twitterSession = result.data;
shareOnTwitter();
}
@Override
public void failure(TwitterException e) {
Log.e("TAG","Twitter Error while authorize user " + e.getMessage());
}
});
} else {
shareOnTwitter();
}
}
private void shareOnTwitter() {
StatusesService statusesService = TwitterCore.getInstance().getApiClient().getStatusesService();
Call<Tweet> tweetCall = statusesService.update("Content goes here", null, false, null, null, null, false, false, null);
tweetCall.enqueue(new Callback<Tweet>() {
@Override
public void success(Result<Tweet> result) {
Log.e("TAG","Twitter Share Success");
logoutTwitter();
}
@Override
public void failure(TwitterException exception) {
Log.e("TAG","Twitter Share Failed with Error: " + exception.getLocalizedMessage());
}
});
}
Создают, Выбирают, Editable
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "My application name");
String sAux = "\nLet me recommend you this application\n\n";
sAux = sAux + "https://play.google.com/store/apps/details?id=the.package.id \n\n";
sendIntent.putExtra(Intent.EXTRA_TEXT, sAux);
startActivity(Intent.createChooser(sendIntent, "choose one"));
==============================================================
Создают, Выбирают, Составной Default
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
startActivity(sendIntent);
=================================================================
отправляют
, Отправляют несколько частей содержания
Для совместного использования нескольких частей содержания, используют действие ACTION_SEND_MULTIPLE вместе со списком URIs, указывающего на содержание. Тип MIME варьируется согласно соединению содержания, которое Вы совместно используете. Например, при совместном использовании 3 изображений JPEG тип все еще "image/jpeg"
. Для смеси типов изображения это должно быть "image/*"
для соответствия действию, которое обрабатывает любой тип изображения. Необходимо только использовать "*/*"
при делении большого разнообразия типов. Как ранее указано, это до приложения получения, чтобы проанализировать и обработать Ваши данные. Вот пример:
ArrayList<Uri> imageUris = new ArrayList<Uri>();
imageUris.add(imageUri1); // Add your image URIs here
imageUris.add(imageUri2);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share images to.."));
Доля ================================================================
С Долей Facebook
ShareLinkContent shareLinkContent = new ShareLinkContent.Builder()
.setQuote("Application of social rating share with your friend")
.setContentUrl(Uri.parse("https://google.com"))
.build();
if (ShareDialog.canShow(ShareLinkContent.class)) {
sd.show(shareLinkContent);
}
==============================================================
С SMS
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.putExtra("Body", "Application of social rating share with your friend");
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);
==============================================================
Доля С Почтой
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "", null));
emailIntent.putExtra(Intent.EXTRA_EMAIL, "Address");
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Application of social rating share with your friend");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Body");
startActivity(Intent.createChooser(emailIntent, "Send Email..."));
Доля =============================================================
с WhatsApp
Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
whatsappIntent.setType("text/plain");
whatsappIntent.setPackage("com.whatsapp");
whatsappIntent.putExtra(Intent.EXTRA_TEXT, "Application of social rating share with your friend");
try {
Objects.requireNonNull(getActivity()).startActivity(whatsappIntent);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(getActivity(), "WhatsApp have not been installed.", Toast.LENGTH_SHORT).show();
}