Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
InstiApp
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
RAHUL SHARMA
InstiApp
Commits
05d0d2cb
Commit
05d0d2cb
authored
Jul 14, 2017
by
yvsriram
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added code for receiving gcm id/token and managing sessions based on logged in status
parent
4647c296
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
343 additions
and
21 deletions
+343
-21
.idea/modules.xml
.idea/modules.xml
+0
-2
app/build.gradle
app/build.gradle
+3
-0
app/google-services.json
app/google-services.json
+42
-0
app/src/main/AndroidManifest.xml
app/src/main/AndroidManifest.xml
+39
-5
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/LoginActivity.java
.../main/java/in/ac/iitb/gymkhana/iitbapp/LoginActivity.java
+111
-13
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/MainActivity.java
...c/main/java/in/ac/iitb/gymkhana/iitbapp/MainActivity.java
+12
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/SessionManager.java
...main/java/in/ac/iitb/gymkhana/iitbapp/SessionManager.java
+51
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/gcm/MyGcmListenerService.java
...in/ac/iitb/gymkhana/iitbapp/gcm/MyGcmListenerService.java
+7
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/gcm/MyInstanceIDListenerService.java
...itb/gymkhana/iitbapp/gcm/MyInstanceIDListenerService.java
+15
-0
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/gcm/RegistrationIntentService.java
.../iitb/gymkhana/iitbapp/gcm/RegistrationIntentService.java
+61
-0
build.gradle
build.gradle
+2
-1
No files found.
.idea/modules.xml
View file @
05d0d2cb
...
@@ -3,8 +3,6 @@
...
@@ -3,8 +3,6 @@
<component
name=
"ProjectModuleManager"
>
<component
name=
"ProjectModuleManager"
>
<modules>
<modules>
<module
fileurl=
"file://$PROJECT_DIR$/IITB-App.iml"
filepath=
"$PROJECT_DIR$/IITB-App.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/IITB-App.iml"
filepath=
"$PROJECT_DIR$/IITB-App.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/IITBApp.iml"
filepath=
"$PROJECT_DIR$/IITBApp.iml"
/>
<module
fileurl=
"file://D:\IITB-App\IITBApp.iml"
filepath=
"D:\IITB-App\IITBApp.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/app/app.iml"
filepath=
"$PROJECT_DIR$/app/app.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/app/app.iml"
filepath=
"$PROJECT_DIR$/app/app.iml"
/>
</modules>
</modules>
</component>
</component>
...
...
app/build.gradle
View file @
05d0d2cb
...
@@ -28,6 +28,7 @@ ext {
...
@@ -28,6 +28,7 @@ ext {
appAuthVersion
=
'0.2.0'
appAuthVersion
=
'0.2.0'
retrofitVersion
=
'2.1.0'
retrofitVersion
=
'2.1.0'
okhttpVersion
=
'3.4.1'
okhttpVersion
=
'3.4.1'
}
}
dependencies
{
dependencies
{
...
@@ -42,9 +43,11 @@ dependencies {
...
@@ -42,9 +43,11 @@ dependencies {
compile
"com.google.android.gms:play-services-maps:${playServicesVersion}"
compile
"com.google.android.gms:play-services-maps:${playServicesVersion}"
compile
"com.android.support:support-v4:${supportLibVersion}"
compile
"com.android.support:support-v4:${supportLibVersion}"
compile
"com.jakewharton:butterknife:${butterKnifeVersion}"
compile
"com.jakewharton:butterknife:${butterKnifeVersion}"
compile
"com.google.android.gms:play-services-gcm:11.0.2"
annotationProcessor
"com.jakewharton:butterknife-compiler:${butterKnifeVersion}"
annotationProcessor
"com.jakewharton:butterknife-compiler:${butterKnifeVersion}"
compile
"com.squareup.retrofit2:retrofit:${retrofitVersion}"
compile
"com.squareup.retrofit2:retrofit:${retrofitVersion}"
compile
"com.squareup.retrofit2:converter-gson:${retrofitVersion}"
compile
"com.squareup.retrofit2:converter-gson:${retrofitVersion}"
compile
"com.squareup.okhttp3:okhttp:${okhttpVersion}"
compile
"com.squareup.okhttp3:okhttp:${okhttpVersion}"
compile
"com.squareup.okhttp3:logging-interceptor:${okhttpVersion}"
compile
"com.squareup.okhttp3:logging-interceptor:${okhttpVersion}"
}
}
apply
plugin:
'com.google.gms.google-services'
app/google-services.json
0 → 100644
View file @
05d0d2cb
{
"project_info"
:
{
"project_number"
:
"306601329049"
,
"firebase_url"
:
"https://iitb-app-5c0aa.firebaseio.com"
,
"project_id"
:
"iitb-app-5c0aa"
,
"storage_bucket"
:
"iitb-app-5c0aa.appspot.com"
},
"client"
:
[
{
"client_info"
:
{
"mobilesdk_app_id"
:
"1:306601329049:android:950a72a311331b9c"
,
"android_client_info"
:
{
"package_name"
:
"in.ac.iitb.gymkhana.iitbapp"
}
},
"oauth_client"
:
[
{
"client_id"
:
"306601329049-6v597vrdv0nbi15ehpehq8hiaek8unqp.apps.googleusercontent.com"
,
"client_type"
:
3
}
],
"api_key"
:
[
{
"current_key"
:
"AIzaSyC1oThCMZN3JMnK6MUTJRjkp47q1K_gnTA"
}
],
"services"
:
{
"analytics_service"
:
{
"status"
:
1
},
"appinvite_service"
:
{
"status"
:
1
,
"other_platform_oauth_client"
:
[]
},
"ads_service"
:
{
"status"
:
2
}
}
}
],
"configuration_version"
:
"1"
}
\ No newline at end of file
app/src/main/AndroidManifest.xml
View file @
05d0d2cb
...
@@ -4,6 +4,8 @@
...
@@ -4,6 +4,8 @@
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.WAKE_LOCK"
/>
<application
<application
android:allowBackup=
"true"
android:allowBackup=
"true"
android:icon=
"@mipmap/ic_launcher"
android:icon=
"@mipmap/ic_launcher"
...
@@ -23,6 +25,7 @@
...
@@ -23,6 +25,7 @@
<activity
<activity
android:name=
".MainActivity"
android:name=
".MainActivity"
android:label=
"@string/app_name"
android:label=
"@string/app_name"
android:launchMode=
"singleTask"
android:theme=
"@style/AppTheme.NoActionBar"
>
android:theme=
"@style/AppTheme.NoActionBar"
>
<intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<action
android:name=
"android.intent.action.MAIN"
/>
...
@@ -30,17 +33,19 @@
...
@@ -30,17 +33,19 @@
<category
android:name=
"android.intent.category.LAUNCHER"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</intent-filter>
</activity>
</activity>
<activity
android:name=
".LoginActivity"
>
<activity
android:name=
".LoginActivity"
android:launchMode=
"singleTask"
>
<intent-filter>
<intent-filter>
<action
android:name=
"HANDLE_AUTHORIZATION_RESPONSE"
/>
<action
android:name=
"HANDLE_AUTHORIZATION_RESPONSE"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
</intent-filter>
</intent-filter>
<intent-filter>
<
!-- <
intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.MAIN" />
<category
android:name=
"android.intent.category.LAUNCHER"
/>
<!–<category android:name="android.intent.category.LAUNCHER" />–>
</intent-filter
>
</intent-filter>--
>
</activity>
</activity>
<activity
android:name=
"net.openid.appauth.RedirectUriReceiverActivity"
>
<activity
android:name=
"net.openid.appauth.RedirectUriReceiverActivity"
>
...
@@ -56,6 +61,35 @@
...
@@ -56,6 +61,35 @@
</intent-filter>
</intent-filter>
</activity>
</activity>
<receiver
android:name=
"com.google.android.gms.gcm.GcmReceiver"
android:exported=
"true"
android:permission=
"com.google.android.c2dm.permission.SEND"
>
<intent-filter>
<action
android:name=
"com.google.android.c2dm.intent.RECEIVE"
/>
<category
android:name=
"com.example.gcm"
/>
</intent-filter>
</receiver>
<service
android:name=
"in.ac.iitb.gymkhana.iitbapp.gcm.MyGcmListenerService"
android:exported=
"false"
>
<intent-filter>
<action
android:name=
"com.google.android.c2dm.intent.RECEIVE"
/>
</intent-filter>
</service>
<service
android:name=
"in.ac.iitb.gymkhana.iitbapp.gcm.MyInstanceIDListenerService"
android:exported=
"false"
>
<intent-filter>
<action
android:name=
"com.google.android.gms.iid.InstanceID"
/>
</intent-filter>
</service>
<service
android:name=
"in.ac.iitb.gymkhana.iitbapp.gcm.RegistrationIntentService"
android:exported=
"false"
></service>
<provider
<provider
android:name=
"in.ac.iitb.gymkhana.iitbapp.data.IITBAppContentProvider"
android:name=
"in.ac.iitb.gymkhana.iitbapp.data.IITBAppContentProvider"
android:authorities=
"in.ac.iitb.gymkhana.iitbapp"
android:authorities=
"in.ac.iitb.gymkhana.iitbapp"
...
...
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/LoginActivity.java
View file @
05d0d2cb
...
@@ -3,19 +3,26 @@ package in.ac.iitb.gymkhana.iitbapp;
...
@@ -3,19 +3,26 @@ package in.ac.iitb.gymkhana.iitbapp;
import
android.annotation.TargetApi
;
import
android.annotation.TargetApi
;
import
android.app.PendingIntent
;
import
android.app.PendingIntent
;
import
android.content.BroadcastReceiver
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.content.IntentFilter
;
import
android.content.SharedPreferences
;
import
android.net.Uri
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.preference.PreferenceManager
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.annotation.Nullable
;
import
android.support.v4.content.LocalBroadcastManager
;
import
android.support.v7.app.AppCompatActivity
;
import
android.support.v7.app.AppCompatActivity
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.View
;
import
android.view.View
;
import
android.widget.Button
;
import
android.widget.Button
;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
com.google.gson.annotations.SerializedName
;
import
com.google.android.gms.common.ConnectionResult
;
import
com.google.android.gms.common.GoogleApiAvailability
;
import
net.openid.appauth.AuthorizationException
;
import
net.openid.appauth.AuthorizationException
;
import
net.openid.appauth.AuthorizationRequest
;
import
net.openid.appauth.AuthorizationRequest
;
...
@@ -27,25 +34,66 @@ import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface;
...
@@ -27,25 +34,66 @@ import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface;
import
in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator
;
import
in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.LoginRequest
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.LoginRequest
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse
;
import
in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse
;
import
in.ac.iitb.gymkhana.iitbapp.gcm.RegistrationIntentService
;
import
retrofit2.Call
;
import
retrofit2.Call
;
import
retrofit2.Callback
;
import
retrofit2.Callback
;
import
retrofit2.Response
;
import
retrofit2.Response
;
import
retrofit2.Retrofit
;
public
class
LoginActivity
extends
AppCompatActivity
{
public
class
LoginActivity
extends
AppCompatActivity
{
public
static
final
String
SENT_TOKEN_TO_SERVER
=
"sentTokenToServer"
;
public
static
final
String
REGISTRATION_COMPLETE
=
"registrationComplete"
;
private
static
final
String
TAG
=
"LoginActivity"
;
private
static
final
String
TAG
=
"LoginActivity"
;
private
static
final
int
PLAY_SERVICES_RESOLUTION_REQUEST
=
9000
;
private
final
String
clientId
=
"pFcDDWtUUfzlAX2ibriV25lm1J2m92O5ynfT4SYk"
;
private
final
String
clientId
=
"pFcDDWtUUfzlAX2ibriV25lm1J2m92O5ynfT4SYk"
;
private
final
String
clientSecret
=
"k56GXiN1qB4Dt7CnTVWjuwLJyWntNulitWOkL7Wddr6JHPiHqIZgSfgUplO6neTqumVr32zA14XgQmkuoC8y6y9jnaQT9tKDsq4jQklRb8MQNQglQ1H4YrmqOwPfaNyO"
;
private
final
String
clientSecret
=
"k56GXiN1qB4Dt7CnTVWjuwLJyWntNulitWOkL7Wddr6JHPiHqIZgSfgUplO6neTqumVr32zA14XgQmkuoC8y6y9jnaQT9tKDsq4jQklRb8MQNQglQ1H4YrmqOwPfaNyO"
;
private
final
Uri
redirectUri
=
Uri
.
parse
(
"https://redirecturi"
);
private
final
Uri
redirectUri
=
Uri
.
parse
(
"https://redirecturi"
);
private
final
Uri
mAuthEndpoint
=
Uri
.
parse
(
"http://gymkhana.iitb.ac.in/sso/oauth/authorize/"
);
private
final
Uri
mAuthEndpoint
=
Uri
.
parse
(
"http://gymkhana.iitb.ac.in/sso/oauth/authorize/"
);
private
final
Uri
mTokenEndpoint
=
Uri
.
parse
(
"http://gymkhana.iitb.ac.in/sso/oauth/token/"
);
private
final
Uri
mTokenEndpoint
=
Uri
.
parse
(
"http://gymkhana.iitb.ac.in/sso/oauth/token/"
);
public
String
authCode
=
null
;
SessionManager
session
;
Context
mContext
=
this
;
private
AuthorizationService
mAuthService
;
private
AuthorizationService
mAuthService
;
private
BroadcastReceiver
mRegistrationBroadcastReceiver
;
private
boolean
isReceiverRegistered
;
@Override
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
session
=
new
SessionManager
(
mContext
);
setContentView
(
R
.
layout
.
activity_login
);
setContentView
(
R
.
layout
.
activity_login
);
mAuthService
=
new
AuthorizationService
(
this
);
mAuthService
=
new
AuthorizationService
(
this
);
mRegistrationBroadcastReceiver
=
new
BroadcastReceiver
()
{
@Override
public
void
onReceive
(
Context
context
,
Intent
intent
)
{
SharedPreferences
sharedPreferences
=
PreferenceManager
.
getDefaultSharedPreferences
(
context
);
boolean
sentToken
=
sharedPreferences
.
getBoolean
(
SENT_TOKEN_TO_SERVER
,
false
);
if
(
sentToken
)
{
String
token
=
intent
.
getStringExtra
(
"Token"
);
Log
.
d
(
TAG
,
"Going to login with :"
+
authCode
+
"\n"
+
token
);
//************
//TODO Remove following 6 lines after the server is hosted
String
gcmRegId
=
token
;
session
.
createLoginSession
(
gcmRegId
);
Intent
i
=
new
Intent
(
mContext
,
MainActivity
.
class
);
i
.
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TOP
);
i
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
startActivity
(
i
);
//**************
login
(
authCode
,
token
);
}
else
{
}
}
};
registerReceiver
();
Button
ldapLogin
=
(
Button
)
findViewById
(
R
.
id
.
ldap_login
);
Button
ldapLogin
=
(
Button
)
findViewById
(
R
.
id
.
ldap_login
);
ldapLogin
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
ldapLogin
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
...
@@ -81,6 +129,7 @@ public class LoginActivity extends AppCompatActivity {
...
@@ -81,6 +129,7 @@ public class LoginActivity extends AppCompatActivity {
if
(
intent
!=
null
)
{
if
(
intent
!=
null
)
{
Log
.
d
(
TAG
,
"Intent Received"
);
Log
.
d
(
TAG
,
"Intent Received"
);
String
action
=
intent
.
getAction
();
String
action
=
intent
.
getAction
();
if
(
action
!=
null
)
{
switch
(
action
)
{
switch
(
action
)
{
case
"HANDLE_AUTHORIZATION_RESPONSE"
:
{
case
"HANDLE_AUTHORIZATION_RESPONSE"
:
{
handleAuthorizationResponse
(
intent
);
handleAuthorizationResponse
(
intent
);
...
@@ -93,6 +142,7 @@ public class LoginActivity extends AppCompatActivity {
...
@@ -93,6 +142,7 @@ public class LoginActivity extends AppCompatActivity {
}
}
}
}
}
}
}
@Override
@Override
protected
void
onStart
()
{
protected
void
onStart
()
{
...
@@ -103,9 +153,17 @@ public class LoginActivity extends AppCompatActivity {
...
@@ -103,9 +153,17 @@ public class LoginActivity extends AppCompatActivity {
@Override
@Override
protected
void
onResume
()
{
protected
void
onResume
()
{
super
.
onResume
();
super
.
onResume
();
registerReceiver
();
Log
.
d
(
TAG
,
"In Resume"
);
Log
.
d
(
TAG
,
"In Resume"
);
}
}
@Override
protected
void
onPause
()
{
LocalBroadcastManager
.
getInstance
(
this
).
unregisterReceiver
(
mRegistrationBroadcastReceiver
);
isReceiverRegistered
=
false
;
super
.
onPause
();
}
@Override
@Override
protected
void
onDestroy
()
{
protected
void
onDestroy
()
{
super
.
onDestroy
();
super
.
onDestroy
();
...
@@ -117,13 +175,19 @@ public class LoginActivity extends AppCompatActivity {
...
@@ -117,13 +175,19 @@ public class LoginActivity extends AppCompatActivity {
AuthorizationException
error
=
AuthorizationException
.
fromIntent
(
intent
);
AuthorizationException
error
=
AuthorizationException
.
fromIntent
(
intent
);
if
(
response
!=
null
)
{
if
(
response
!=
null
)
{
Log
.
d
(
TAG
,
"Received AuthorizationResponse: "
+
"AuthCode: "
+
response
.
authorizationCode
);
authCode
=
response
.
authorizationCode
;
Log
.
d
(
TAG
,
"Received AuthorizationResponse: "
+
"AuthCode: "
+
authCode
);
Toast
.
makeText
(
this
,
Toast
.
makeText
(
this
,
"AuthCode: "
+
response
.
authorization
Code
,
Toast
.
LENGTH_SHORT
)
"AuthCode: "
+
auth
Code
,
Toast
.
LENGTH_SHORT
)
.
show
();
.
show
();
if
(
checkPlayServices
())
{
Intent
registerIntent
=
new
Intent
(
this
,
RegistrationIntentService
.
class
);
startService
(
registerIntent
);
}
//
// TODO: Replace gcmId
login
(
response
.
authorizationCode
,
"xyz"
);
}
else
{
}
else
{
Log
.
i
(
TAG
,
"Authorization failed: "
+
error
.
getMessage
());
Log
.
i
(
TAG
,
"Authorization failed: "
+
error
.
getMessage
());
Toast
.
makeText
(
this
,
Toast
.
makeText
(
this
,
...
@@ -169,12 +233,20 @@ public class LoginActivity extends AppCompatActivity {
...
@@ -169,12 +233,20 @@ public class LoginActivity extends AppCompatActivity {
}
}
private
void
login
(
String
authorizationCode
,
String
gcmId
)
{
private
void
login
(
String
authorizationCode
,
String
gcmId
)
{
final
String
gcmRegId
=
gcmId
;
LoginRequest
loginRequest
=
new
LoginRequest
(
authorizationCode
,
gcmId
);
LoginRequest
loginRequest
=
new
LoginRequest
(
authorizationCode
,
gcmId
);
RetrofitInterface
retrofitInterface
=
ServiceGenerator
.
createService
(
RetrofitInterface
.
class
);
RetrofitInterface
retrofitInterface
=
ServiceGenerator
.
createService
(
RetrofitInterface
.
class
);
retrofitInterface
.
login
(
loginRequest
).
enqueue
(
new
Callback
<
LoginResponse
>()
{
retrofitInterface
.
login
(
loginRequest
).
enqueue
(
new
Callback
<
LoginResponse
>()
{
@Override
@Override
public
void
onResponse
(
Call
<
LoginResponse
>
call
,
Response
<
LoginResponse
>
response
)
{
public
void
onResponse
(
Call
<
LoginResponse
>
call
,
Response
<
LoginResponse
>
response
)
{
if
(
response
.
isSuccessful
())
{
if
(
response
.
isSuccessful
())
{
Log
.
d
(
TAG
,
"Login request successful"
);
session
.
createLoginSession
(
gcmRegId
);
Intent
i
=
new
Intent
(
mContext
,
MainActivity
.
class
);
i
.
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TOP
);
i
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
startActivity
(
i
);
//Save credentials in AccountManager to keep user logged in
//Save credentials in AccountManager to keep user logged in
//Go to MainActivity
//Go to MainActivity
}
}
...
@@ -187,5 +259,31 @@ public class LoginActivity extends AppCompatActivity {
...
@@ -187,5 +259,31 @@ public class LoginActivity extends AppCompatActivity {
}
}
});
});
}
}
private
void
registerReceiver
()
{
if
(!
isReceiverRegistered
)
{
LocalBroadcastManager
.
getInstance
(
this
).
registerReceiver
(
mRegistrationBroadcastReceiver
,
new
IntentFilter
(
REGISTRATION_COMPLETE
));
isReceiverRegistered
=
true
;
}
}
private
boolean
checkPlayServices
()
{
GoogleApiAvailability
apiAvailability
=
GoogleApiAvailability
.
getInstance
();
int
resultCode
=
apiAvailability
.
isGooglePlayServicesAvailable
(
this
);
if
(
resultCode
!=
ConnectionResult
.
SUCCESS
)
{
if
(
apiAvailability
.
isUserResolvableError
(
resultCode
))
{
apiAvailability
.
getErrorDialog
(
this
,
resultCode
,
PLAY_SERVICES_RESOLUTION_REQUEST
)
.
show
();
}
else
{
Log
.
i
(
TAG
,
"This device is not supported."
);
finish
();
}
return
false
;
}
return
true
;
}
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/MainActivity.java
View file @
05d0d2cb
...
@@ -12,6 +12,7 @@ import android.support.v7.app.AppCompatActivity;
...
@@ -12,6 +12,7 @@ import android.support.v7.app.AppCompatActivity;
import
android.support.v7.widget.Toolbar
;
import
android.support.v7.widget.Toolbar
;
import
android.view.Menu
;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.MenuItem
;
import
android.widget.Toast
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.AboutFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.AboutFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.CMSFragment
;
import
in.ac.iitb.gymkhana.iitbapp.fragment.CMSFragment
;
...
@@ -29,10 +30,17 @@ import in.ac.iitb.gymkhana.iitbapp.fragment.TimetableFragment;
...
@@ -29,10 +30,17 @@ import in.ac.iitb.gymkhana.iitbapp.fragment.TimetableFragment;
public
class
MainActivity
extends
AppCompatActivity
public
class
MainActivity
extends
AppCompatActivity
implements
NavigationView
.
OnNavigationItemSelectedListener
{
implements
NavigationView
.
OnNavigationItemSelectedListener
{
private
static
final
String
TAG
=
"MainActivity"
;
SessionManager
session
;
@Override
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_main
);
setContentView
(
R
.
layout
.
activity_main
);
session
=
new
SessionManager
(
getApplicationContext
());
Toast
.
makeText
(
getApplicationContext
(),
"User Login Status: "
+
session
.
isLoggedIn
(),
Toast
.
LENGTH_LONG
).
show
();
session
.
checkLogin
();
Toolbar
toolbar
=
(
Toolbar
)
findViewById
(
R
.
id
.
toolbar
);
Toolbar
toolbar
=
(
Toolbar
)
findViewById
(
R
.
id
.
toolbar
);
setSupportActionBar
(
toolbar
);
setSupportActionBar
(
toolbar
);
...
@@ -45,6 +53,7 @@ public class MainActivity extends AppCompatActivity
...
@@ -45,6 +53,7 @@ public class MainActivity extends AppCompatActivity
NavigationView
navigationView
=
(
NavigationView
)
findViewById
(
R
.
id
.
nav_view
);
NavigationView
navigationView
=
(
NavigationView
)
findViewById
(
R
.
id
.
nav_view
);
navigationView
.
setNavigationItemSelectedListener
(
this
);
navigationView
.
setNavigationItemSelectedListener
(
this
);
}
}
@Override
@Override
...
@@ -64,6 +73,7 @@ public class MainActivity extends AppCompatActivity
...
@@ -64,6 +73,7 @@ public class MainActivity extends AppCompatActivity
return
true
;
return
true
;
}
}
@Override
@Override
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
// Handle action bar item clicks here. The action bar will
// Handle action bar item clicks here. The action bar will
...
@@ -143,4 +153,6 @@ public class MainActivity extends AppCompatActivity
...
@@ -143,4 +153,6 @@ public class MainActivity extends AppCompatActivity
transaction
.
replace
(
R
.
id
.
framelayout_for_fragment
,
fragment
,
fragment
.
getTag
());
transaction
.
replace
(
R
.
id
.
framelayout_for_fragment
,
fragment
,
fragment
.
getTag
());
transaction
.
commit
();
transaction
.
commit
();
}
}
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/SessionManager.java
0 → 100644
View file @
05d0d2cb
package
in.ac.iitb.gymkhana.iitbapp
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.SharedPreferences
;
import
android.content.SharedPreferences.Editor
;
import
android.util.Log
;
public
class
SessionManager
{
private
static
final
String
PREF_NAME
=
"LoggedInPref"
;
private
static
final
String
IS_LOGIN
=
"IsLoggedIn"
;
private
static
final
String
GCM_ID
=
"GcmId"
;
SharedPreferences
pref
;
Editor
editor
;
Context
context
;
int
PRIVATE_MODE
=
0
;
public
SessionManager
(
Context
context
)
{
this
.
context
=
context
;
pref
=
context
.
getSharedPreferences
(
PREF_NAME
,
PRIVATE_MODE
);
editor
=
pref
.
edit
();
}
public
void
checkLogin
()
{
if
(!
this
.
isLoggedIn
())
{
Intent
i
=
new
Intent
(
context
,
LoginActivity
.
class
);
// Closing all the Activities
i
.
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TOP
);
// Add new Flag to start new Activity
i
.
setFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
// Staring Login Activity
context
.
startActivity
(
i
);
}
}
public
void
createLoginSession
(
String
gcmId
)
{
Log
.
d
(
"SessionManager"
,
"GcmId being stored"
);
editor
.
putBoolean
(
IS_LOGIN
,
true
);
editor
.
putString
(
GCM_ID
,
gcmId
);
editor
.
commit
();
}
public
boolean
isLoggedIn
()
{
return
pref
.
getBoolean
(
IS_LOGIN
,
false
);
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/gcm/MyGcmListenerService.java
0 → 100644
View file @
05d0d2cb
package
in.ac.iitb.gymkhana.iitbapp.gcm
;
import
com.google.android.gms.gcm.GcmListenerService
;
public
class
MyGcmListenerService
extends
GcmListenerService
{
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/gcm/MyInstanceIDListenerService.java
0 → 100644
View file @
05d0d2cb
package
in.ac.iitb.gymkhana.iitbapp.gcm
;
import
android.content.Intent
;
import
com.google.android.gms.iid.InstanceIDListenerService
;
public
class
MyInstanceIDListenerService
extends
InstanceIDListenerService
{
@Override
public
void
onTokenRefresh
()
{
// Fetch updated Instance ID token and notify our app's server of any changes (if applicable).
Intent
intent
=
new
Intent
(
this
,
RegistrationIntentService
.
class
);
startService
(
intent
);
}
}
app/src/main/java/in/ac/iitb/gymkhana/iitbapp/gcm/RegistrationIntentService.java
0 → 100644
View file @
05d0d2cb
package
in.ac.iitb.gymkhana.iitbapp.gcm
;
import
android.annotation.TargetApi
;
import
android.app.IntentService
;
import
android.content.Intent
;
import
android.content.SharedPreferences
;
import
android.os.Build
;
import
android.preference.PreferenceManager
;
import
android.support.annotation.Nullable
;
import
android.support.annotation.RequiresApi
;
import
android.support.v4.content.LocalBroadcastManager
;
import
android.util.Log
;
import
android.widget.Toast
;
import
com.google.android.gms.gcm.GoogleCloudMessaging
;
import
com.google.android.gms.iid.InstanceID
;
@TargetApi
(
Build
.
VERSION_CODES
.
CUPCAKE
)
public
class
RegistrationIntentService
extends
IntentService
{
public
static
final
String
SENT_TOKEN_TO_SERVER
=
"sentTokenToServer"
;
public
static
final
String
REGISTRATION_COMPLETE
=
"registrationComplete"
;
private
static
final
String
TAG
=
"RegIntentService"
;
@RequiresApi
(
api
=
Build
.
VERSION_CODES
.
CUPCAKE
)
public
RegistrationIntentService
()
{
super
(
TAG
);
}
@RequiresApi
(
api
=
Build
.
VERSION_CODES
.
GINGERBREAD
)
@Override
protected
void
onHandleIntent
(
@Nullable
Intent
intent
)
{
String
token
=
null
;
SharedPreferences
sharedPreferences
=
PreferenceManager
.
getDefaultSharedPreferences
(
this
);
try
{
InstanceID
instanceID
=
InstanceID
.
getInstance
(
this
);
token
=
instanceID
.
getToken
(
"306601329049"
,
GoogleCloudMessaging
.
INSTANCE_ID_SCOPE
,
null
);
Log
.
i
(
TAG
,
"GCM Registration Token: "
+
token
);
Toast
.
makeText
(
this
,
"GCM Registration Token: "
+
token
,
Toast
.
LENGTH_SHORT
).
show
();
sharedPreferences
.
edit
().
putBoolean
(
SENT_TOKEN_TO_SERVER
,
true
).
apply
();
}
catch
(
Exception
e
)
{
Log
.
d
(
TAG
,
"Failed to complete token refresh"
,
e
);
sharedPreferences
.
edit
().
putBoolean
(
SENT_TOKEN_TO_SERVER
,
false
).
apply
();
}
//Notify UI that registration is complete
Intent
registrationComplete
=
new
Intent
(
REGISTRATION_COMPLETE
);
registrationComplete
.
putExtra
(
"Token"
,
token
);
LocalBroadcastManager
.
getInstance
(
this
).
sendBroadcast
(
registrationComplete
);
}
}
build.gradle
View file @
05d0d2cb
...
@@ -7,8 +7,9 @@ buildscript {
...
@@ -7,8 +7,9 @@ buildscript {
jcenter
()
jcenter
()
}
}
dependencies
{
dependencies
{
classpath
'com.android.tools.build:gradle:3.0.0-alpha6'
classpath
'com.android.tools.build:gradle:3.0.0-alpha6'
classpath
'com.google.gms:google-services:3.1.0'
// NOTE: Do not place your application dependencies here; they belong
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
// in the individual module build.gradle files
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment