Merge "syncslides: Using the new discovery API."
diff --git a/android/app/build.gradle b/android/app/build.gradle
index a507a38..42f51da 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -29,8 +29,8 @@
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
- applicationId "io.v.syncslides"
- minSdkVersion 22
+ applicationId "io.v.syncslides23"
+ minSdkVersion 23
targetSdkVersion 23
versionCode 1
versionName "1.0"
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 2e8ea3c..e187071 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -3,7 +3,7 @@
package="io.v.syncslides"
xmlns:android="http://schemas.android.com/apk/res/android">
- <uses-sdk android:minSdkVersion="22"/>
+ <uses-sdk android:minSdkVersion="23"/>
<!-- SignInActivity has the user select an email address. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
diff --git a/android/app/src/main/java/io/v/syncslides/SignInActivity.java b/android/app/src/main/java/io/v/syncslides/SignInActivity.java
index 8fc2adb..40f8a80 100644
--- a/android/app/src/main/java/io/v/syncslides/SignInActivity.java
+++ b/android/app/src/main/java/io/v/syncslides/SignInActivity.java
@@ -4,6 +4,7 @@
package io.v.syncslides;
+import android.Manifest;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AccountManagerCallback;
@@ -14,6 +15,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Handler;
@@ -51,6 +53,7 @@
private static final int REQUEST_CODE_PICK_ACCOUNT = 1000;
private static final int REQUEST_CODE_FETCH_USER_PROFILE_APPROVAL = 1001;
+ private static final int REQUEST_CODE_ASK_PERMISSIONS = 1002;
private static final String OAUTH_PROFILE = "email";
private static final String OAUTH_SCOPE = "oauth2:" + OAUTH_PROFILE;
@@ -108,6 +111,12 @@
if (mAccountName.isEmpty()) {
mProgressDialog.setMessage("Signing in...");
mProgressDialog.show();
+ if (checkSelfPermission(Manifest.permission.READ_CONTACTS) !=
+ PackageManager.PERMISSION_GRANTED) {
+ requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
+ REQUEST_CODE_ASK_PERMISSIONS);
+ return;
+ }
pickAccount();
} else {
finishActivity();
@@ -136,6 +145,27 @@
}
}
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions,
+ int[] grantResults) {
+ switch (requestCode) {
+ case REQUEST_CODE_ASK_PERMISSIONS:
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ pickAccount();
+ return;
+ } else {
+ Toast.makeText(
+ this, "Access to contacts required to pick account",
+ Toast.LENGTH_LONG).show();
+ requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
+ REQUEST_CODE_ASK_PERMISSIONS);
+ return;
+ }
+ default:
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ }
+ }
+
private void pickAccount() {
Intent chooseIntent = AccountManager.newChooseAccountIntent(
null, null, new String[]{"com.google"}, false, null, null, null, null);