mirror of
https://github.com/QuasarApp/QtAndroidTools.git
synced 2025-04-29 14:34:32 +00:00
Started code for google driver access
This commit is contained in:
parent
8be3bd206e
commit
8c20913be8
@ -62,21 +62,26 @@ QAndroidGoogleAccount* QAndroidGoogleAccount::instance()
|
|||||||
return m_pInstance;
|
return m_pInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QAndroidGoogleAccount::signIn(int scope)
|
bool QAndroidGoogleAccount::signIn(const QString &ScopeName)
|
||||||
{
|
{
|
||||||
if(m_JavaGoogleAccount.isValid())
|
if(m_JavaGoogleAccount.isValid())
|
||||||
{
|
{
|
||||||
return m_JavaGoogleAccount.callMethod<jboolean>("signIn", "(I)Z", scope);
|
return m_JavaGoogleAccount.callMethod<jboolean>("signIn",
|
||||||
|
"(Ljava/lang/String;)Z",
|
||||||
|
QAndroidJniObject::fromString(ScopeName).object<jstring>()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QAndroidGoogleAccount::signInSelectAccount(int scope)
|
bool QAndroidGoogleAccount::signInSelectAccount(const QString &ScopeName)
|
||||||
{
|
{
|
||||||
if(m_JavaGoogleAccount.isValid())
|
if(m_JavaGoogleAccount.isValid())
|
||||||
{
|
{
|
||||||
const QAndroidJniObject SignInIntent = m_JavaGoogleAccount.callObjectMethod("getSignInIntent", "(I)Landroid/content/Intent;", scope);
|
const QAndroidJniObject SignInIntent = m_JavaGoogleAccount.callObjectMethod("getSignInIntent",
|
||||||
|
"(Ljava/lang/String;)Landroid/content/Intent;",
|
||||||
|
QAndroidJniObject::fromString(ScopeName).object<jstring>()
|
||||||
|
);
|
||||||
if(SignInIntent.isValid())
|
if(SignInIntent.isValid())
|
||||||
{
|
{
|
||||||
QtAndroid::startActivity(SignInIntent, m_SignInId, this);
|
QtAndroid::startActivity(SignInIntent, m_SignInId, this);
|
||||||
|
@ -50,7 +50,6 @@ class QAndroidGoogleAccount : public QObject, public QAndroidActivityResultRecei
|
|||||||
{
|
{
|
||||||
Q_PROPERTY(QAndroidGoogleAccountInfo signedInAccount READ getSignedInAccountInfo NOTIFY signedInAccountInfoChanged)
|
Q_PROPERTY(QAndroidGoogleAccountInfo signedInAccount READ getSignedInAccountInfo NOTIFY signedInAccountInfoChanged)
|
||||||
Q_DISABLE_COPY(QAndroidGoogleAccount)
|
Q_DISABLE_COPY(QAndroidGoogleAccount)
|
||||||
Q_ENUMS(SCOPES)
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
class AccountPhotoImageProvider : public QQuickImageProvider
|
class AccountPhotoImageProvider : public QQuickImageProvider
|
||||||
@ -78,33 +77,11 @@ class QAndroidGoogleAccount : public QObject, public QAndroidActivityResultRecei
|
|||||||
QAndroidGoogleAccount();
|
QAndroidGoogleAccount();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
enum SCOPES
|
|
||||||
{
|
|
||||||
SCOPE_NULL = 0,
|
|
||||||
SCOPE_APP_STATE,
|
|
||||||
SCOPE_CLOUD_SAVE,
|
|
||||||
SCOPE_DRIVE_APPFOLDER,
|
|
||||||
SCOPE_DRIVE_FILE,
|
|
||||||
SCOPE_EMAIL,
|
|
||||||
SCOPE_FITNESS_ACTIVITY_READ,
|
|
||||||
SCOPE_FITNESS_ACTIVITY_READ_WRITE,
|
|
||||||
SCOPE_FITNESS_BODY_READ,
|
|
||||||
SCOPE_FITNESS_BODY_READ_WRITE,
|
|
||||||
SCOPE_FITNESS_LOCATION_READ,
|
|
||||||
SCOPE_FITNESS_LOCATION_READ_WRITE,
|
|
||||||
SCOPE_FITNESS_NUTRITION_READ,
|
|
||||||
SCOPE_FITNESS_NUTRITION_READ_WRITE,
|
|
||||||
SCOPE_GAMES,
|
|
||||||
SCOPE_PLUS_ME,
|
|
||||||
SCOPE_PROFILE
|
|
||||||
};
|
|
||||||
|
|
||||||
static QObject* qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine);
|
static QObject* qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine);
|
||||||
static QAndroidGoogleAccount* instance();
|
static QAndroidGoogleAccount* instance();
|
||||||
|
|
||||||
Q_INVOKABLE bool signIn(int scope = SCOPE_NULL);
|
Q_INVOKABLE bool signIn(const QString &ScopeName = QString());
|
||||||
Q_INVOKABLE bool signInSelectAccount(int scope = SCOPE_NULL);
|
Q_INVOKABLE bool signInSelectAccount(const QString &ScopeName = QString());
|
||||||
Q_INVOKABLE bool signOut();
|
Q_INVOKABLE bool signOut();
|
||||||
Q_INVOKABLE bool revokeAccess();
|
Q_INVOKABLE bool revokeAccess();
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ QAndroidGoogleDrive::QAndroidGoogleDrive() : m_JavaGoogleDrive("com/falsinsoft/q
|
|||||||
QtAndroid::androidActivity().object<jobject>())
|
QtAndroid::androidActivity().object<jobject>())
|
||||||
{
|
{
|
||||||
m_pInstance = this;
|
m_pInstance = this;
|
||||||
|
LoadScopeDefinitions();
|
||||||
}
|
}
|
||||||
|
|
||||||
QObject* QAndroidGoogleDrive::qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine)
|
QObject* QAndroidGoogleDrive::qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine)
|
||||||
@ -45,3 +46,16 @@ QAndroidGoogleDrive* QAndroidGoogleDrive::instance()
|
|||||||
return m_pInstance;
|
return m_pInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QAndroidGoogleDrive::LoadScopeDefinitions()
|
||||||
|
{
|
||||||
|
const char ScopesClass[] = "com/google/api/services/drive/DriveScopes";
|
||||||
|
|
||||||
|
m_ScopeList[0] = QAndroidJniObject::getStaticObjectField<jstring>(ScopesClass, "DRIVE").toString();
|
||||||
|
m_ScopeList[1] = QAndroidJniObject::getStaticObjectField<jstring>(ScopesClass, "DRIVE_APPDATA").toString();
|
||||||
|
m_ScopeList[2] = QAndroidJniObject::getStaticObjectField<jstring>(ScopesClass, "DRIVE_FILE").toString();
|
||||||
|
m_ScopeList[3] = QAndroidJniObject::getStaticObjectField<jstring>(ScopesClass, "DRIVE_METADATA").toString();
|
||||||
|
m_ScopeList[4] = QAndroidJniObject::getStaticObjectField<jstring>(ScopesClass, "DRIVE_METADATA_READONLY").toString();
|
||||||
|
m_ScopeList[5] = QAndroidJniObject::getStaticObjectField<jstring>(ScopesClass, "DRIVE_PHOTOS_READONLY").toString();
|
||||||
|
m_ScopeList[6] = QAndroidJniObject::getStaticObjectField<jstring>(ScopesClass, "DRIVE_READONLY").toString();
|
||||||
|
m_ScopeList[7] = QAndroidJniObject::getStaticObjectField<jstring>(ScopesClass, "DRIVE_SCRIPTS").toString();
|
||||||
|
}
|
||||||
|
@ -28,12 +28,28 @@
|
|||||||
|
|
||||||
class QAndroidGoogleDrive : public QObject
|
class QAndroidGoogleDrive : public QObject
|
||||||
{
|
{
|
||||||
Q_DISABLE_COPY(QAndroidGoogleDrive)
|
Q_PROPERTY(QString SCOPE_DRIVE MEMBER SCOPE_DRIVE CONSTANT)
|
||||||
|
Q_PROPERTY(QString SCOPE_DRIVE_APPDATA MEMBER SCOPE_DRIVE_APPDATA CONSTANT)
|
||||||
|
Q_PROPERTY(QString SCOPE_DRIVE_FILE MEMBER SCOPE_DRIVE_FILE CONSTANT)
|
||||||
|
Q_PROPERTY(QString SCOPE_DRIVE_METADATA MEMBER SCOPE_DRIVE_METADATA CONSTANT)
|
||||||
|
Q_PROPERTY(QString SCOPE_DRIVE_METADATA_READONLY MEMBER SCOPE_DRIVE_METADATA_READONLY CONSTANT)
|
||||||
|
Q_PROPERTY(QString SCOPE_DRIVE_PHOTOS_READONLY MEMBER SCOPE_DRIVE_PHOTOS_READONLY CONSTANT)
|
||||||
|
Q_PROPERTY(QString SCOPE_DRIVE_READONLY MEMBER SCOPE_DRIVE_READONLY CONSTANT)
|
||||||
|
Q_PROPERTY(QString SCOPE_DRIVE_SCRIPTS MEMBER SCOPE_DRIVE_SCRIPTS CONSTANT)
|
||||||
|
Q_DISABLE_COPY(QAndroidGoogleDrive)
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
QAndroidGoogleDrive();
|
QAndroidGoogleDrive();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
const QString &SCOPE_DRIVE = m_ScopeList[0];
|
||||||
|
const QString &SCOPE_DRIVE_APPDATA = m_ScopeList[1];
|
||||||
|
const QString &SCOPE_DRIVE_FILE = m_ScopeList[2];
|
||||||
|
const QString &SCOPE_DRIVE_METADATA = m_ScopeList[3];
|
||||||
|
const QString &SCOPE_DRIVE_METADATA_READONLY = m_ScopeList[4];
|
||||||
|
const QString &SCOPE_DRIVE_PHOTOS_READONLY = m_ScopeList[5];
|
||||||
|
const QString &SCOPE_DRIVE_READONLY = m_ScopeList[6];
|
||||||
|
const QString &SCOPE_DRIVE_SCRIPTS = m_ScopeList[7];
|
||||||
|
|
||||||
static QObject* qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine);
|
static QObject* qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine);
|
||||||
static QAndroidGoogleDrive* instance();
|
static QAndroidGoogleDrive* instance();
|
||||||
@ -41,4 +57,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
const QAndroidJniObject m_JavaGoogleDrive;
|
const QAndroidJniObject m_JavaGoogleDrive;
|
||||||
static QAndroidGoogleDrive *m_pInstance;
|
static QAndroidGoogleDrive *m_pInstance;
|
||||||
|
QString m_ScopeList[8];
|
||||||
|
|
||||||
|
void LoadScopeDefinitions();
|
||||||
};
|
};
|
||||||
|
@ -61,22 +61,22 @@ public class AndroidGoogleAccount
|
|||||||
mActivityInstance = ActivityInstance;
|
mActivityInstance = ActivityInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
private GoogleSignInClient getSignInClient(String ScopeValue)
|
private GoogleSignInClient getSignInClient(String ScopeName)
|
||||||
{
|
{
|
||||||
GoogleSignInOptions.Builder SignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN);
|
GoogleSignInOptions.Builder SignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN);
|
||||||
if(ScopeValue != null) SignInOptions.requestScopes(new Scope(ScopeValue));
|
if(ScopeName.isEmpty() == false) SignInOptions.requestScopes(new Scope(ScopeName));
|
||||||
SignInOptions.requestEmail();
|
SignInOptions.requestEmail();
|
||||||
|
|
||||||
return GoogleSignIn.getClient(mActivityInstance, SignInOptions.build());
|
return GoogleSignIn.getClient(mActivityInstance, SignInOptions.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Intent getSignInIntent(int ScopeId)
|
public Intent getSignInIntent(String ScopeName)
|
||||||
{
|
{
|
||||||
Intent SignInIntent = null;
|
Intent SignInIntent = null;
|
||||||
|
|
||||||
if(mGoogleSignInClient == null)
|
if(mGoogleSignInClient == null)
|
||||||
{
|
{
|
||||||
mGoogleSignInClient = getSignInClient(ScopeIdToValue(ScopeId));
|
mGoogleSignInClient = getSignInClient(ScopeName);
|
||||||
SignInIntent = mGoogleSignInClient.getSignInIntent();
|
SignInIntent = mGoogleSignInClient.getSignInIntent();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,31 +86,25 @@ public class AndroidGoogleAccount
|
|||||||
public void signInIntentDataResult(Intent Data)
|
public void signInIntentDataResult(Intent Data)
|
||||||
{
|
{
|
||||||
final Task<GoogleSignInAccount> SignInTask = GoogleSignIn.getSignedInAccountFromIntent(Data);
|
final Task<GoogleSignInAccount> SignInTask = GoogleSignIn.getSignedInAccountFromIntent(Data);
|
||||||
boolean signInSuccessfully = true;
|
|
||||||
|
|
||||||
try
|
if(SignInTask.isSuccessful())
|
||||||
{
|
{
|
||||||
loadSignedInAccountInfo(SignInTask.getResult(ApiException.class));
|
loadSignedInAccountInfo(SignInTask.getResult());
|
||||||
|
signedIn(true);
|
||||||
}
|
}
|
||||||
catch(ApiException e)
|
else
|
||||||
{
|
{
|
||||||
if(e.getStatusCode() == GoogleSignInStatusCodes.DEVELOPER_ERROR)
|
SignInTask.addOnCompleteListener(mActivityInstance, new SignInAccountListener());
|
||||||
{
|
|
||||||
Log.d("AndroidGoogleAccount", "DEVELOPER_ERROR -> Have you signed your project on Android console?");
|
|
||||||
}
|
|
||||||
signInSuccessfully = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
signedIn(signInSuccessfully);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean signIn(int ScopeId)
|
public boolean signIn(String ScopeName)
|
||||||
{
|
{
|
||||||
if(mGoogleSignInClient == null)
|
if(mGoogleSignInClient == null)
|
||||||
{
|
{
|
||||||
Task<GoogleSignInAccount> SignInTask;
|
Task<GoogleSignInAccount> SignInTask;
|
||||||
|
|
||||||
mGoogleSignInClient = getSignInClient(ScopeIdToValue(ScopeId));
|
mGoogleSignInClient = getSignInClient(ScopeName);
|
||||||
|
|
||||||
SignInTask = mGoogleSignInClient.silentSignIn();
|
SignInTask = mGoogleSignInClient.silentSignIn();
|
||||||
if(SignInTask.isSuccessful())
|
if(SignInTask.isSuccessful())
|
||||||
@ -251,9 +245,14 @@ public class AndroidGoogleAccount
|
|||||||
}
|
}
|
||||||
catch(ApiException e)
|
catch(ApiException e)
|
||||||
{
|
{
|
||||||
if(e.getStatusCode() == GoogleSignInStatusCodes.SIGN_IN_REQUIRED)
|
switch(e.getStatusCode())
|
||||||
{
|
{
|
||||||
Log.d("AndroidGoogleAccount", "SIGN_IN_REQUIRED -> You have to signin by select account before use this call");
|
case GoogleSignInStatusCodes.DEVELOPER_ERROR:
|
||||||
|
Log.d("AndroidGoogleAccount", "DEVELOPER_ERROR -> Have you signed your project on Android console?");
|
||||||
|
break;
|
||||||
|
case GoogleSignInStatusCodes.SIGN_IN_REQUIRED:
|
||||||
|
Log.d("AndroidGoogleAccount", "SIGN_IN_REQUIRED -> You have to signin by select account before use this call");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
signInSuccessfully = false;
|
signInSuccessfully = false;
|
||||||
mGoogleSignInClient = null;
|
mGoogleSignInClient = null;
|
||||||
@ -274,65 +273,6 @@ public class AndroidGoogleAccount
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String ScopeIdToValue(int ScopeId)
|
|
||||||
{
|
|
||||||
String ScopeValue = null;
|
|
||||||
|
|
||||||
switch(ScopeId)
|
|
||||||
{
|
|
||||||
case SCOPE_APP_STATE:
|
|
||||||
ScopeValue = Scopes.APP_STATE;
|
|
||||||
break;
|
|
||||||
case SCOPE_CLOUD_SAVE:
|
|
||||||
ScopeValue = Scopes.CLOUD_SAVE;
|
|
||||||
break;
|
|
||||||
case SCOPE_DRIVE_APPFOLDER:
|
|
||||||
ScopeValue = Scopes.CLOUD_SAVE;
|
|
||||||
break;
|
|
||||||
case SCOPE_DRIVE_FILE:
|
|
||||||
ScopeValue = Scopes.DRIVE_FILE;
|
|
||||||
break;
|
|
||||||
case SCOPE_EMAIL:
|
|
||||||
ScopeValue = Scopes.EMAIL;
|
|
||||||
break;
|
|
||||||
case SCOPE_FITNESS_ACTIVITY_READ:
|
|
||||||
ScopeValue = Scopes.FITNESS_ACTIVITY_READ;
|
|
||||||
break;
|
|
||||||
case SCOPE_FITNESS_ACTIVITY_READ_WRITE:
|
|
||||||
ScopeValue = Scopes.FITNESS_ACTIVITY_READ_WRITE;
|
|
||||||
break;
|
|
||||||
case SCOPE_FITNESS_BODY_READ:
|
|
||||||
ScopeValue = Scopes.FITNESS_BODY_READ;
|
|
||||||
break;
|
|
||||||
case SCOPE_FITNESS_BODY_READ_WRITE:
|
|
||||||
ScopeValue = Scopes.FITNESS_BODY_READ_WRITE;
|
|
||||||
break;
|
|
||||||
case SCOPE_FITNESS_LOCATION_READ:
|
|
||||||
ScopeValue = Scopes.FITNESS_LOCATION_READ;
|
|
||||||
break;
|
|
||||||
case SCOPE_FITNESS_LOCATION_READ_WRITE:
|
|
||||||
ScopeValue = Scopes.FITNESS_LOCATION_READ_WRITE;
|
|
||||||
break;
|
|
||||||
case SCOPE_FITNESS_NUTRITION_READ:
|
|
||||||
ScopeValue = Scopes.FITNESS_NUTRITION_READ;
|
|
||||||
break;
|
|
||||||
case SCOPE_FITNESS_NUTRITION_READ_WRITE:
|
|
||||||
ScopeValue = Scopes.FITNESS_NUTRITION_READ_WRITE;
|
|
||||||
break;
|
|
||||||
case SCOPE_GAMES:
|
|
||||||
ScopeValue = Scopes.GAMES;
|
|
||||||
break;
|
|
||||||
case SCOPE_PLUS_ME:
|
|
||||||
ScopeValue = Scopes.PLUS_ME;
|
|
||||||
break;
|
|
||||||
case SCOPE_PROFILE:
|
|
||||||
ScopeValue = Scopes.PROFILE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ScopeValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class AccountInfo
|
public static class AccountInfo
|
||||||
{
|
{
|
||||||
public String id;
|
public String id;
|
||||||
@ -343,23 +283,6 @@ public class AndroidGoogleAccount
|
|||||||
public Bitmap photo;
|
public Bitmap photo;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final int SCOPE_APP_STATE = 1;
|
|
||||||
private static final int SCOPE_CLOUD_SAVE = 2;
|
|
||||||
private static final int SCOPE_DRIVE_APPFOLDER = 3;
|
|
||||||
private static final int SCOPE_DRIVE_FILE = 4;
|
|
||||||
private static final int SCOPE_EMAIL = 5;
|
|
||||||
private static final int SCOPE_FITNESS_ACTIVITY_READ = 6;
|
|
||||||
private static final int SCOPE_FITNESS_ACTIVITY_READ_WRITE = 7;
|
|
||||||
private static final int SCOPE_FITNESS_BODY_READ = 8;
|
|
||||||
private static final int SCOPE_FITNESS_BODY_READ_WRITE = 9;
|
|
||||||
private static final int SCOPE_FITNESS_LOCATION_READ = 10;
|
|
||||||
private static final int SCOPE_FITNESS_LOCATION_READ_WRITE = 11;
|
|
||||||
private static final int SCOPE_FITNESS_NUTRITION_READ = 12;
|
|
||||||
private static final int SCOPE_FITNESS_NUTRITION_READ_WRITE = 13;
|
|
||||||
private static final int SCOPE_GAMES = 14;
|
|
||||||
private static final int SCOPE_PLUS_ME = 15;
|
|
||||||
private static final int SCOPE_PROFILE = 16;
|
|
||||||
|
|
||||||
private static native void updateSignedInAccountInfo(AccountInfo accountInfo);
|
private static native void updateSignedInAccountInfo(AccountInfo accountInfo);
|
||||||
private static native void signedIn(boolean signInSuccessfully);
|
private static native void signedIn(boolean signInSuccessfully);
|
||||||
private static native void signedOut();
|
private static native void signedOut();
|
||||||
|
@ -34,13 +34,49 @@ import android.provider.MediaStore;
|
|||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
|
import com.google.android.gms.auth.api.signin.GoogleSignIn;
|
||||||
|
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
|
||||||
|
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
|
||||||
|
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
|
||||||
|
import com.google.android.gms.common.api.Scope;
|
||||||
|
import com.google.api.client.extensions.android.http.AndroidHttp;
|
||||||
|
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
|
||||||
|
import com.google.api.client.json.gson.GsonFactory;
|
||||||
|
import com.google.api.services.drive.Drive;
|
||||||
|
import com.google.api.services.drive.DriveScopes;
|
||||||
|
import com.google.api.services.drive.model.File;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
public class AndroidGoogleDrive
|
public class AndroidGoogleDrive
|
||||||
{
|
{
|
||||||
private final Activity mActivityInstance;
|
private final Activity mActivityInstance;
|
||||||
|
private Drive mDriveService = null;
|
||||||
|
|
||||||
public AndroidGoogleDrive(Activity ActivityInstance)
|
public AndroidGoogleDrive(Activity ActivityInstance)
|
||||||
{
|
{
|
||||||
mActivityInstance = ActivityInstance;
|
mActivityInstance = ActivityInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean authenticate(String AppName, String ScopeName)
|
||||||
|
{
|
||||||
|
final GoogleSignInAccount SignInAccount = GoogleSignIn.getLastSignedInAccount(mActivityInstance);
|
||||||
|
|
||||||
|
if(SignInAccount != null)
|
||||||
|
{
|
||||||
|
GoogleAccountCredential AccountCredential;
|
||||||
|
Drive.Builder DriveBuilder;
|
||||||
|
|
||||||
|
AccountCredential = GoogleAccountCredential.usingOAuth2(mActivityInstance, Collections.singleton(ScopeName));
|
||||||
|
AccountCredential.setSelectedAccount(SignInAccount.getAccount());
|
||||||
|
|
||||||
|
DriveBuilder = new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), AccountCredential);
|
||||||
|
DriveBuilder.setApplicationName(AppName);
|
||||||
|
mDriveService = DriveBuilder.build();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,6 +96,7 @@ ApplicationWindow {
|
|||||||
ListElement { title: "AdMobRewardedVideo"; source: "qrc:/tools/AndroidAdMobRewardedVideo.qml" }
|
ListElement { title: "AdMobRewardedVideo"; source: "qrc:/tools/AndroidAdMobRewardedVideo.qml" }
|
||||||
ListElement { title: "PlayStore"; source: "qrc:/tools/AndroidPlayStore.qml" }
|
ListElement { title: "PlayStore"; source: "qrc:/tools/AndroidPlayStore.qml" }
|
||||||
ListElement { title: "GoogleAccount"; source: "qrc:/tools/AndroidGoogleAccount.qml" }
|
ListElement { title: "GoogleAccount"; source: "qrc:/tools/AndroidGoogleAccount.qml" }
|
||||||
|
ListElement { title: "GoogleDrive"; source: "qrc:/tools/AndroidGoogleDrive.qml" }
|
||||||
}
|
}
|
||||||
|
|
||||||
ScrollIndicator.vertical: ScrollIndicator { }
|
ScrollIndicator.vertical: ScrollIndicator { }
|
||||||
|
@ -15,5 +15,6 @@
|
|||||||
<file>tools/AndroidPlayStore.qml</file>
|
<file>tools/AndroidPlayStore.qml</file>
|
||||||
<file>tools/AndroidAdMobRewardedVideo.qml</file>
|
<file>tools/AndroidAdMobRewardedVideo.qml</file>
|
||||||
<file>tools/AndroidGoogleAccount.qml</file>
|
<file>tools/AndroidGoogleAccount.qml</file>
|
||||||
|
<file>tools/AndroidGoogleDrive.qml</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@ -21,6 +21,13 @@ dependencies {
|
|||||||
implementation 'com.android.support:support-v4:26.+'
|
implementation 'com.android.support:support-v4:26.+'
|
||||||
implementation 'com.google.android.gms:play-services-ads:16.+'
|
implementation 'com.google.android.gms:play-services-ads:16.+'
|
||||||
implementation 'com.google.android.gms:play-services-auth:16.+'
|
implementation 'com.google.android.gms:play-services-auth:16.+'
|
||||||
|
implementation 'com.google.http-client:google-http-client-gson:1.26.0'
|
||||||
|
implementation('com.google.api-client:google-api-client-android:1.26.0') {
|
||||||
|
exclude group: 'org.apache.httpcomponents'
|
||||||
|
}
|
||||||
|
implementation ('com.google.apis:google-api-services-drive:v3-rev173-1.25.0') {
|
||||||
|
exclude group: 'org.apache.httpcomponents'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
@ -57,4 +64,15 @@ android {
|
|||||||
lintOptions {
|
lintOptions {
|
||||||
abortOnError false
|
abortOnError false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
packagingOptions {
|
||||||
|
exclude 'META-INF/DEPENDENCIES'
|
||||||
|
exclude 'META-INF/LICENSE'
|
||||||
|
exclude 'META-INF/LICENSE.txt'
|
||||||
|
exclude 'META-INF/license.txt'
|
||||||
|
exclude 'META-INF/NOTICE'
|
||||||
|
exclude 'META-INF/NOTICE.txt'
|
||||||
|
exclude 'META-INF/notice.txt'
|
||||||
|
exclude 'META-INF/ASL2.0'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
15
QtAndroidToolsDemo/tools/AndroidGoogleDrive.qml
Normal file
15
QtAndroidToolsDemo/tools/AndroidGoogleDrive.qml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
import QtQuick.Dialogs 1.3
|
||||||
|
import QtAndroidTools 1.0
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: page
|
||||||
|
padding: 0
|
||||||
|
|
||||||
|
Button {
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
text: "test"
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user