diff --git a/README.md b/README.md index 11c8c1b..c49008e 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Add it in your root build.gradle at the end of repositories: ```groovy dependencies { - implementation 'com.github.studyplus:Studyplus-Android-SDK:2.5.1' + implementation 'com.github.studyplus:Studyplus-Android-SDK:2.5.2' } ``` @@ -41,12 +41,7 @@ Studyplus.instance.setup("consumer_key", "consumer_secret") Open an Activity to connect with Studyplus. ```kotlin -try { - Studyplus.instance.startAuth(this@MainActivity, REQUEST_CODE_AUTH) -} catch (e: ActivityNotFoundException) { - e.printStackTrace() - Toast.makeText(context, "Need for Studyplus 5.0.0+", Toast.LENGTH_LONG).show() -} +Studyplus.instance.startAuth(this@MainActivity, REQUEST_CODE_AUTH) ``` Then save its result. diff --git a/build.gradle b/build.gradle index be51d5a..9ac676e 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,8 @@ buildscript { 'compileSdk' : 28, 'minSdk' : 21, 'targetSdk' : 28, + 'annotation' : '1.1.0', + 'core_ktx' : '1.1.0', 'appcompat' : '1.1.0', 'constraintLayout': '1.1.3' ] diff --git a/studyplus-android-sdk/build.gradle b/studyplus-android-sdk/build.gradle index 137f45a..0d5e856 100644 --- a/studyplus-android-sdk/build.gradle +++ b/studyplus-android-sdk/build.gradle @@ -44,7 +44,8 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_cotoutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_cotoutines_version" - implementation 'androidx.annotation:annotation:1.1.0' + implementation "androidx.annotation:annotation:$versions.annotation" + implementation "androidx.core:core-ktx:$versions.core_ktx" def okhttp = "3.14.2" implementation "com.squareup.okhttp3:okhttp:$okhttp" diff --git a/studyplus-android-sdk/src/main/java/jp/studyplus/android/sdk/Studyplus.kt b/studyplus-android-sdk/src/main/java/jp/studyplus/android/sdk/Studyplus.kt index eaf4d75..470d22c 100644 --- a/studyplus-android-sdk/src/main/java/jp/studyplus/android/sdk/Studyplus.kt +++ b/studyplus-android-sdk/src/main/java/jp/studyplus/android/sdk/Studyplus.kt @@ -40,9 +40,7 @@ class Studyplus private constructor() { * @since 2.0.0 */ fun startAuth(activity: Activity, requestCode: Int) { - if (consumerKey == null || consumerSecret == null) { - throw IllegalStateException("Please call setup method before this method call.") - } + check(consumerKey != null && consumerSecret != null) { "Please call setup method before this method call." } AuthTransit(consumerKey!!, consumerSecret!!).start(activity, requestCode) } @@ -67,9 +65,7 @@ class Studyplus private constructor() { * @since 2.0.0 */ fun postRecord(context: Context, studyRecord: StudyRecord, listener: OnPostRecordListener?) { - if (!isAuthenticated(context)) { - throw IllegalStateException("Please check your application's authentication before this method call.") - } + check(isAuthenticated(context)) { "Please check your application's authentication before this method call." } runBlocking { try { @@ -90,4 +86,4 @@ class Studyplus private constructor() { @JvmStatic val instance by lazy { Studyplus() } } -} \ No newline at end of file +} diff --git a/studyplus-android-sdk/src/main/java/jp/studyplus/android/sdk/internal/auth/AuthTransit.kt b/studyplus-android-sdk/src/main/java/jp/studyplus/android/sdk/internal/auth/AuthTransit.kt index c3486aa..9fffb7d 100644 --- a/studyplus-android-sdk/src/main/java/jp/studyplus/android/sdk/internal/auth/AuthTransit.kt +++ b/studyplus-android-sdk/src/main/java/jp/studyplus/android/sdk/internal/auth/AuthTransit.kt @@ -1,8 +1,11 @@ package jp.studyplus.android.sdk.internal.auth import android.app.Activity +import android.content.Context import android.content.Intent +import android.content.pm.PackageManager import android.net.Uri +import androidx.core.net.toUri import jp.studyplus.android.sdk.R internal class AuthTransit @@ -11,15 +14,23 @@ internal class AuthTransit * @param consumerSecret for API */ constructor( - private val consumerKey: String, - private val consumerSecret: String + private val consumerKey: String, + private val consumerSecret: String ) { companion object { private const val EXTRA_CONSUMER_KEY = "consumer_key" private const val EXTRA_CONSUMER_SECRET = "consumer_secret" + + private val URI_STORE = "market://details?id=jp.studyplus.android.app".toUri() + private val INTENT_STORE = Intent(Intent.ACTION_VIEW, URI_STORE) } fun start(activity: Activity, requestCode: Int) { + if (isInstalledStudyplus(activity).not()) { + openGooglePlayStore(activity) + return + } + val intent = Intent() intent.action = Intent.ACTION_VIEW intent.putExtra(EXTRA_CONSUMER_KEY, consumerKey) @@ -27,4 +38,13 @@ constructor( intent.data = Uri.parse(activity.getString(R.string.app_custom_scheme)) activity.startActivityForResult(intent, requestCode) } + + private fun openGooglePlayStore(context: Context) { + context.startActivity(INTENT_STORE) + } + + private fun isInstalledStudyplus(context: Context): Boolean { + val packages = context.packageManager.getInstalledApplications(PackageManager.GET_META_DATA) + return packages.any { it.packageName == "jp.studyplus.android.app" } + } } diff --git a/studyplus-android-sdk/src/main/res/values/strings.xml b/studyplus-android-sdk/src/main/res/values/strings.xml index d23e36d..3d31321 100644 --- a/studyplus-android-sdk/src/main/res/values/strings.xml +++ b/studyplus-android-sdk/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - studyplus://auth/external/start + studyplus://auth/external/start