diff --git a/ASNETutorial.iml b/ASNETutorial.iml index 0bb6048..fc084f1 100644 --- a/ASNETutorial.iml +++ b/ASNETutorial.iml @@ -1,13 +1,14 @@ - + - + @@ -15,5 +16,4 @@ - - + \ No newline at end of file diff --git a/README.md b/README.md index a36df5c..df97cee 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -ASNETutorial [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-ASNETutorial-brightgreen.svg?style=flat)](https://android-arsenal.com/details/3/921) +ASNETutorial [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-ASNETutorial-brightgreen.svg?style=flat)](https://android-arsenal.com/details/3/921) [![Codeproject](https://img.shields.io/badge/Codeproject-article-ff9900.svg?style=flat)](http://www.codeproject.com/Articles/815900/Android-social-network-integration) ============ - +![](https://raw.githubusercontent.com/gorbin/ASNE/master/resources/recomended.png) Simple example project for https://github.com/gorbin/ASNE library Today social network integration to your android application is common practice - it makes user easily login to your app and share their actions. There are a lot of ways to do it - usually developers add native social network SDK or use API for every network. It provides login via installed social network application or native dialogs. You have to spend time and nerves to learn and use different social network SDKs. @@ -120,9 +120,9 @@ To continue you need dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:20.0.0' - compile 'com.github.asne:asne-facebook:0.2.1' - compile 'com.github.asne:asne-linkedin:0.2.1' - compile 'com.github.asne:asne-twitter:0.2.1' + compile 'com.github.asne:asne-facebook:0.3.1' + compile 'com.github.asne:asne-linkedin:0.3.1' + compile 'com.github.asne:asne-twitter:0.3.1' } ``` 5. Lets create some layouts @@ -347,8 +347,10 @@ To continue you need ```java String TWITTER_CONSUMER_KEY = getActivity().getString(R.string.twitter_consumer_key); String TWITTER_CONSUMER_SECRET = getActivity().getString(R.string.twitter_consumer_secret); + String TWITTER_CALLBACK_URL = "oauth://ASNE"; String LINKEDIN_CONSUMER_KEY = getActivity().getString(R.string.linkedin_consumer_key); String LINKEDIN_CONSUMER_SECRET = getActivity().getString(R.string.linkedin_consumer_secret); + String LINKEDIN_CALLBACK_URL = "https://asneTutorial"; ``` * Create chosen `SocialNetworks` with permissions @@ -358,10 +360,10 @@ To continue you need FacebookSocialNetwork fbNetwork = new FacebookSocialNetwork(this, fbScope); // permissions for twitter in developer twitter console - TwitterSocialNetwork twNetwork = new TwitterSocialNetwork(this, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET); + TwitterSocialNetwork twNetwork = new TwitterSocialNetwork(this, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_CALLBACK_URL); - String linkedInScope = "r_basicprofile+rw_nus+r_network+w_messages"; - LinkedInSocialNetwork liNetwork = new LinkedInSocialNetwork(this, LINKEDIN_CONSUMER_KEY, LINKEDIN_CONSUMER_SECRET, linkedInScope); + String linkedInScope = "r_basicprofile+r_fullprofile+rw_nus+r_network+w_messages+r_emailaddress+r_contactinfo"; + LinkedInSocialNetwork liNetwork = new LinkedInSocialNetwork(this, LINKEDIN_CONSUMER_KEY, LINKEDIN_CONSUMER_SECRET, LINKEDIN_CALLBACK_URL, linkedInScope); ``` @@ -774,6 +776,8 @@ Using ASNE modules you can easily and quickly integrate any popular social netwo This is simple tutorial demom if you need more complex - [check ASNE demo app](https://github.com/gorbin/ASNE) +[Codeproject article](http://www.codeproject.com/Articles/815900/Android-social-network-integration) + Source code: [Zip](https://github.com/gorbin/ASNETutorial/archive/master.zip) diff --git a/app/app.iml b/app/app.iml index e2170ab..85bf501 100644 --- a/app/app.iml +++ b/app/app.iml @@ -1,5 +1,5 @@ - + @@ -9,10 +9,15 @@ - + + @@ -30,29 +36,31 @@ - - - - - + + + + + + + + - + - + - @@ -63,6 +71,15 @@ + + + + + + + + + @@ -77,19 +94,20 @@ - + - - - - - - - - - + + + + + - + + + + + + + - - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 5943160..caa8ee2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,28 +1,29 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 19 - buildToolsVersion "20.0.0" + compileSdkVersion 23 + buildToolsVersion '23.0.2' defaultConfig { applicationId "com.github.gorbin.asnetutorial" minSdkVersion 10 - targetSdkVersion 19 + targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { - runProguard false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' +// runProguard false +// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') - compile 'com.android.support:appcompat-v7:20.0.0' - compile 'com.github.asne:asne-facebook:0.2.1' - compile 'com.github.asne:asne-linkedin:0.2.1' - compile 'com.github.asne:asne-twitter:0.2.1' + compile 'com.android.support:appcompat-v7:23.1.0' + compile 'com.github.asne:asne-facebook:0.3.1' + compile 'com.github.asne:asne-linkedin:0.3.1' + compile 'com.github.asne:asne-twitter:0.3.1' + compile 'com.github.asne:asne-googleplus:0.3.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6e5ca8c..229b20e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.github.gorbin.asnetutorial" xmlns:tools="http://schemas.android.com/tools"> @@ -18,7 +18,9 @@ - + diff --git a/app/src/main/java/com/github/gorbin/asnetutorial/FriendsListAdapter.java b/app/src/main/java/com/github/gorbin/asnetutorial/FriendsListAdapter.java index a02ec42..2bb5eac 100644 --- a/app/src/main/java/com/github/gorbin/asnetutorial/FriendsListAdapter.java +++ b/app/src/main/java/com/github/gorbin/asnetutorial/FriendsListAdapter.java @@ -9,6 +9,10 @@ import android.widget.TextView; import com.github.gorbin.asne.core.persons.SocialPerson; +import com.github.gorbin.asne.facebook.FacebookSocialNetwork; +import com.github.gorbin.asne.googleplus.GooglePlusSocialNetwork; +import com.github.gorbin.asne.linkedin.LinkedInSocialNetwork; +import com.github.gorbin.asne.twitter.TwitterSocialNetwork; import com.squareup.picasso.Picasso; import java.util.ArrayList; @@ -73,18 +77,22 @@ public View getView(int position, View convertView, ViewGroup parent) { private void colorRow(int networkId){ int color = context.getResources().getColor(R.color.dark); switch (networkId) { - case 1: + case TwitterSocialNetwork.ID: color = context.getResources().getColor(R.color.twitter); image = R.drawable.twitter_user; break; - case 2: + case LinkedInSocialNetwork.ID: color = context.getResources().getColor(R.color.linkedin); image = R.drawable.linkedin_user; break; - case 4: + case FacebookSocialNetwork.ID: color = context.getResources().getColor(R.color.facebook); image = R.drawable.com_facebook_profile_picture_blank_square; break; + case GooglePlusSocialNetwork.ID: + color = context.getResources().getColor(R.color.googleplus); + image = R.drawable.g_plus_user; + break; } holder.label.setTextColor(color); } diff --git a/app/src/main/java/com/github/gorbin/asnetutorial/MainFragment.java b/app/src/main/java/com/github/gorbin/asnetutorial/MainFragment.java index c6447d8..94fb471 100644 --- a/app/src/main/java/com/github/gorbin/asnetutorial/MainFragment.java +++ b/app/src/main/java/com/github/gorbin/asnetutorial/MainFragment.java @@ -12,6 +12,7 @@ import com.github.gorbin.asne.core.SocialNetworkManager; import com.github.gorbin.asne.core.listener.OnLoginCompleteListener; import com.github.gorbin.asne.facebook.FacebookSocialNetwork; +import com.github.gorbin.asne.googleplus.GooglePlusSocialNetwork; import com.github.gorbin.asne.linkedin.LinkedInSocialNetwork; import com.github.gorbin.asne.twitter.TwitterSocialNetwork; @@ -31,12 +32,10 @@ public class MainFragment extends Fragment implements SocialNetworkManager.OnIni * 6 - Odnoklassniki * 7 - Instagram */ - public static final int TWITTER = 1; - public static final int LINKEDIN = 2; - public static final int FACEBOOK = 4; private Button facebook; private Button twitter; private Button linkedin; + private Button googleplus; public MainFragment() { } @@ -53,17 +52,21 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, twitter.setOnClickListener(loginClick); linkedin = (Button) rootView.findViewById(R.id.linkedin); linkedin.setOnClickListener(loginClick); + googleplus = (Button) rootView.findViewById(R.id.googleplus); + googleplus.setOnClickListener(loginClick); //Get Keys for initiate SocialNetworks String TWITTER_CONSUMER_KEY = getActivity().getString(R.string.twitter_consumer_key); String TWITTER_CONSUMER_SECRET = getActivity().getString(R.string.twitter_consumer_secret); + String TWITTER_CALLBACK_URL = "oauth://ASNE"; String LINKEDIN_CONSUMER_KEY = getActivity().getString(R.string.linkedin_consumer_key); String LINKEDIN_CONSUMER_SECRET = getActivity().getString(R.string.linkedin_consumer_secret); + String LINKEDIN_CALLBACK_URL = "https://asneTutorial"; //Chose permissions ArrayList fbScope = new ArrayList(); fbScope.addAll(Arrays.asList("public_profile, email, user_friends")); - String linkedInScope = "r_basicprofile+rw_nus+r_network+w_messages"; + String linkedInScope = "r_basicprofile+r_fullprofile+rw_nus+r_network+w_messages+r_emailaddress+r_contactinfo"; //Use manager to manage SocialNetworks mSocialNetworkManager = (SocialNetworkManager) getFragmentManager().findFragmentByTag(MainActivity.SOCIAL_NETWORK_TAG); @@ -77,13 +80,17 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mSocialNetworkManager.addSocialNetwork(fbNetwork); //Init and add to manager TwitterSocialNetwork - TwitterSocialNetwork twNetwork = new TwitterSocialNetwork(this, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET); + TwitterSocialNetwork twNetwork = new TwitterSocialNetwork(this, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_CALLBACK_URL); mSocialNetworkManager.addSocialNetwork(twNetwork); //Init and add to manager LinkedInSocialNetwork - LinkedInSocialNetwork liNetwork = new LinkedInSocialNetwork(this, LINKEDIN_CONSUMER_KEY, LINKEDIN_CONSUMER_SECRET, linkedInScope); + LinkedInSocialNetwork liNetwork = new LinkedInSocialNetwork(this, LINKEDIN_CONSUMER_KEY, LINKEDIN_CONSUMER_SECRET, LINKEDIN_CALLBACK_URL, linkedInScope); mSocialNetworkManager.addSocialNetwork(liNetwork); + //Init and add to manager LinkedInSocialNetwork + GooglePlusSocialNetwork gpNetwork = new GooglePlusSocialNetwork(this); + mSocialNetworkManager.addSocialNetwork(gpNetwork); + //Initiate every network from mSocialNetworkManager getFragmentManager().beginTransaction().add(mSocialNetworkManager, MainActivity.SOCIAL_NETWORK_TAG).commit(); mSocialNetworkManager.setOnInitializationCompleteListener(this); @@ -103,15 +110,18 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, private void initSocialNetwork(SocialNetwork socialNetwork){ if(socialNetwork.isConnected()){ switch (socialNetwork.getID()){ - case FACEBOOK: + case FacebookSocialNetwork.ID: facebook.setText("Show Facebook profile"); break; - case TWITTER: + case TwitterSocialNetwork.ID: twitter.setText("Show Twitter profile"); break; - case LINKEDIN: + case LinkedInSocialNetwork.ID: linkedin.setText("Show LinkedIn profile"); break; + case GooglePlusSocialNetwork.ID: + googleplus.setText("Show GooglePlus profile"); + break; } } } @@ -132,13 +142,16 @@ public void onClick(View view) { int networkId = 0; switch (view.getId()){ case R.id.facebook: - networkId = FACEBOOK; + networkId = FacebookSocialNetwork.ID; break; case R.id.twitter: - networkId = TWITTER; + networkId = TwitterSocialNetwork.ID; break; case R.id.linkedin: - networkId = LINKEDIN; + networkId = LinkedInSocialNetwork.ID; + break; + case R.id.googleplus: + networkId = GooglePlusSocialNetwork.ID; break; } SocialNetwork socialNetwork = mSocialNetworkManager.getSocialNetwork(networkId); diff --git a/app/src/main/java/com/github/gorbin/asnetutorial/ProfileFragment.java b/app/src/main/java/com/github/gorbin/asnetutorial/ProfileFragment.java index cb666da..d06057b 100644 --- a/app/src/main/java/com/github/gorbin/asnetutorial/ProfileFragment.java +++ b/app/src/main/java/com/github/gorbin/asnetutorial/ProfileFragment.java @@ -20,6 +20,10 @@ import com.github.gorbin.asne.core.listener.OnPostingCompleteListener; import com.github.gorbin.asne.core.listener.OnRequestSocialPersonCompleteListener; import com.github.gorbin.asne.core.persons.SocialPerson; +import com.github.gorbin.asne.facebook.FacebookSocialNetwork; +import com.github.gorbin.asne.googleplus.GooglePlusSocialNetwork; +import com.github.gorbin.asne.linkedin.LinkedInSocialNetwork; +import com.github.gorbin.asne.twitter.TwitterSocialNetwork; import com.squareup.picasso.Picasso; public class ProfileFragment extends Fragment implements OnRequestSocialPersonCompleteListener { @@ -131,8 +135,13 @@ public void onClick(View view) { ad.setPositiveButton("Post link", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Bundle postParams = new Bundle(); + postParams.putString(SocialNetwork.BUNDLE_NAME, "Simple and easy way to add social networks for android application"); postParams.putString(SocialNetwork.BUNDLE_LINK, link); - socialNetwork.requestPostLink(postParams, message, postingComplete); + if(networkId == GooglePlusSocialNetwork.ID) { + socialNetwork.requestPostDialog(postParams, postingComplete); + } else { + socialNetwork.requestPostLink(postParams, message, postingComplete); + } } }); ad.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @@ -166,15 +175,19 @@ private void colorProfile(int networkId){ int color = getResources().getColor(R.color.dark); int image = R.drawable.user; switch (networkId) { - case 1: + case TwitterSocialNetwork.ID: color = getResources().getColor(R.color.twitter); image = R.drawable.twitter_user; break; - case 2: + case LinkedInSocialNetwork.ID: color = getResources().getColor(R.color.linkedin); image = R.drawable.linkedin_user; break; - case 4: + case GooglePlusSocialNetwork.ID: + color = getResources().getColor(R.color.googleplus); + image = R.drawable.g_plus_user; + break; + case FacebookSocialNetwork.ID: color = getResources().getColor(R.color.facebook); image = R.drawable.com_facebook_profile_picture_blank_square; break; diff --git a/app/src/main/res/layout/main_fragment.xml b/app/src/main/res/layout/main_fragment.xml index f60ed07..e0d37e0 100644 --- a/app/src/main/res/layout/main_fragment.xml +++ b/app/src/main/res/layout/main_fragment.xml @@ -32,4 +32,13 @@ android:background="#287bbc" android:layout_margin="8dp" android:textColor="#ffffffff"/> +