diff --git a/app/build.gradle b/app/build.gradle index 3985bd1..1d0bbec 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin-android-extensions' android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion defaultConfig { applicationId "com.potatoinc.instantappsample.app" diff --git a/base/build.gradle b/base/build.gradle index 2a47877..a75ea5d 100644 --- a/base/build.gradle +++ b/base/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin-android-extensions' android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion baseFeature true defaultConfig { diff --git a/base/src/main/java/com/example/android/instantappsample/base/Util.kt b/base/src/main/java/com/example/android/instantappsample/base/Util.kt index 07aa496..7921140 100644 --- a/base/src/main/java/com/example/android/instantappsample/base/Util.kt +++ b/base/src/main/java/com/example/android/instantappsample/base/Util.kt @@ -1,8 +1,10 @@ package com.example.android.instantappsample.base import android.app.Activity +import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Build import com.google.android.gms.instantapps.InstantApps object Util { @@ -18,4 +20,31 @@ object Util { ) } } +} + +fun Context.updateInstantAppCookie(byteArray: ByteArray): Boolean { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (byteArray.size <= packageManager.instantAppCookieMaxBytes) { + packageManager.updateInstantAppCookie(byteArray) + } else { + return false + } + } else { + val packageManagerCompat = InstantApps.getPackageManagerCompat(this) + if (byteArray.size <= packageManagerCompat.instantAppCookieMaxSize) { + packageManagerCompat.setInstantAppCookie(byteArray) + } else { + return false + } + } + + return true +} + +fun Context.getInstantAppCookie(): ByteArray { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + packageManager.instantAppCookie + } else { + InstantApps.getPackageManagerCompat(this).instantAppCookie + } } \ No newline at end of file diff --git a/character-details/build.gradle b/character-details/build.gradle index 2073a06..620df2f 100644 --- a/character-details/build.gradle +++ b/character-details/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin-android-extensions' android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion defaultConfig { minSdkVersion rootProject.minSdkVersion diff --git a/character-details/src/main/java/com/example/android/instantappsample/character_details/CharacterDetailsActivity.kt b/character-details/src/main/java/com/example/android/instantappsample/character_details/CharacterDetailsActivity.kt index e24637c..412cef6 100644 --- a/character-details/src/main/java/com/example/android/instantappsample/character_details/CharacterDetailsActivity.kt +++ b/character-details/src/main/java/com/example/android/instantappsample/character_details/CharacterDetailsActivity.kt @@ -2,12 +2,11 @@ package com.example.android.instantappsample.character_details import android.arch.lifecycle.Observer import android.arch.lifecycle.ViewModelProviders -import android.os.Build import android.os.Bundle import android.os.PersistableBundle import android.support.v7.app.AppCompatActivity import com.bumptech.glide.Glide -import com.google.android.gms.instantapps.InstantApps +import com.example.android.instantappsample.base.updateInstantAppCookie import kotlinx.android.synthetic.main.activity_character_details.* import timber.log.Timber import java.nio.charset.Charset @@ -40,13 +39,7 @@ class CharacterDetailsActivity : AppCompatActivity() { } }) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - Timber.e("${packageManager.instantAppCookieMaxBytes}") - packageManager.updateInstantAppCookie(intent?.data.toString().toByteArray(Charset.defaultCharset())) - } else { - Timber.e("${InstantApps.getPackageManagerCompat(this).instantAppCookieMaxSize}") - } - + updateInstantAppCookie(intent?.data.toString().toByteArray(Charset.defaultCharset())) } } diff --git a/character-list/build.gradle b/character-list/build.gradle index 8274a9b..29a8d5d 100644 --- a/character-list/build.gradle +++ b/character-list/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin-android-extensions' android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion defaultConfig { minSdkVersion rootProject.minSdkVersion diff --git a/character-list/src/main/java/com/example/android/instantappsample/character_list/CharacterListActivity.kt b/character-list/src/main/java/com/example/android/instantappsample/character_list/CharacterListActivity.kt index 20fca1f..e11cad0 100644 --- a/character-list/src/main/java/com/example/android/instantappsample/character_list/CharacterListActivity.kt +++ b/character-list/src/main/java/com/example/android/instantappsample/character_list/CharacterListActivity.kt @@ -9,6 +9,7 @@ import android.os.Build import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.view.View +import com.example.android.instantappsample.base.getInstantAppCookie import com.google.android.gms.auth.api.credentials.* import com.google.android.gms.common.api.ApiException import com.google.android.gms.common.api.ResolvableApiException @@ -88,6 +89,11 @@ public class CharacterListActivity : AppCompatActivity() { } } + override fun onResume() { + super.onResume() + Timber.e(String(getInstantAppCookie(), Charset.defaultCharset())) + } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) diff --git a/instantapp/build.gradle b/instantapp/build.gradle index 15628c7..82b70ca 100644 --- a/instantapp/build.gradle +++ b/instantapp/build.gradle @@ -4,7 +4,6 @@ apply plugin: 'kotlin-android-extensions' android { compileSdkVersion rootProject.compileSdkVersion - buildToolsVersion rootProject.buildToolsVersion defaultConfig { minSdkVersion rootProject.minSdkVersion diff --git a/proguard-rules.pro b/proguard-rules.pro index 0daed52..62ad25c 100644 --- a/proguard-rules.pro +++ b/proguard-rules.pro @@ -98,6 +98,9 @@ -keep, includedescriptorclasses class com.example.android.instantappsample.base.RestClient { public protected *; } +-keep, includedescriptorclasses class com.example.android.instantappsample.base.UtilKt { + public protected *; +} -keep, includedescriptorclasses class com.example.android.instantappsample.base.data.Character { public protected *; }