1 // Copyright 2015-present 650 Industries. All rights reserved. 2 package host.exp.exponent.branch 3 4 import android.app.Activity 5 import android.app.Application 6 import android.content.Context 7 import android.content.pm.PackageManager 8 import android.net.Uri 9 import host.exp.exponent.analytics.EXL 10 import io.branch.referral.Branch 11 12 object BranchManager { 13 private val TAG = BranchManager::class.java.simpleName 14 isEnablednull15 fun isEnabled(context: Context): Boolean { 16 try { 17 val ai = context.packageManager.getApplicationInfo( 18 context.packageName, 19 PackageManager.GET_META_DATA 20 ) 21 if (ai.metaData != null) { 22 return ai.metaData.getString("io.branch.sdk.BranchKey") != null 23 } 24 } catch (ignore: PackageManager.NameNotFoundException) { 25 } 26 return false 27 } 28 initializenull29 fun initialize(application: Application) { 30 if (!isEnabled(application)) { 31 return 32 } 33 try { 34 Class.forName("io.branch.referral.Branch") 35 Branch.getAutoInstance(application) 36 } catch (e: ClassNotFoundException) { 37 // expected if Branch is not installed, fail silently 38 } 39 } 40 handleLinknull41 fun handleLink(activity: Activity, uri: String?, sdkVersion: String?) { 42 if (!isEnabled(activity)) { 43 return 44 } 45 try { 46 val branchModule = Class.forName("io.branch.rnbranch.RNBranchModule") 47 val m = branchModule.getMethod("initSession", Uri::class.java, Activity::class.java) 48 m.invoke(null, Uri.parse(uri), activity) 49 } catch (e: ClassNotFoundException) { 50 // expected if Branch is not installed, fail silently 51 } catch (e: Exception) { 52 EXL.e(TAG, e) 53 } 54 } 55 } 56