11package com.dropbox.core.android.internal
22
3+ import android.content.Context
34import android.content.Intent
5+ import android.content.pm.PackageInfo
6+ import android.content.pm.PackageManager
7+ import com.dropbox.core.DbxSdkVersion
48import com.dropbox.core.android.AuthActivity
59
610internal object DropboxAuthIntent {
@@ -12,16 +16,29 @@ internal object DropboxAuthIntent {
1216 }
1317 }
1418
19+ fun Context.getTargetSdkVersion (): Int? {
20+ return try {
21+ val packageInfo: PackageInfo = packageManager.getPackageInfo(packageName, 0 )
22+ val targetSdkVersion: Int = packageInfo.applicationInfo.targetSdkVersion
23+ targetSdkVersion
24+ } catch (e: Exception ) {
25+ null
26+ }
27+ }
28+
1529 /* *
1630 * @return Intent to auth with official app
1731 * Extras should be filled in by callee
1832 */
1933 fun buildOfficialAuthIntent (
2034 mState : AuthSessionViewModel .State ,
2135 stateNonce : String ,
22- packageName : String ,
23- callingActivityFullyQualifiedClassName : String
36+ authActivity : AuthActivity ,
2437 ): Intent {
38+
39+ val callingActivityFullyQualifiedClassName = authActivity::class .java.name
40+ val packageName = authActivity.packageName
41+
2542 return buildActionAuthenticateIntent().apply {
2643 putExtra(EXTRA_CONSUMER_KEY , mState.mAppKey)
2744 putExtra(EXTRA_CONSUMER_SIG , " " )
@@ -31,6 +48,10 @@ internal object DropboxAuthIntent {
3148 putExtra(EXTRA_SESSION_ID , mState.mSessionId)
3249 putExtra(EXTRA_CALLING_PACKAGE , packageName)
3350 putExtra(EXTRA_AUTH_STATE , stateNonce)
51+ putExtra(EXTRA_DROPBOX_SDK_JAVA_VERSION , DbxSdkVersion .Version )
52+ authActivity.getTargetSdkVersion()?.let { targetSdkVersion ->
53+ putExtra(EXTRA_TARGET_SDK_VERSION , targetSdkVersion)
54+ }
3455
3556 mState.mTokenAccessType?.apply {
3657 val queryParams = QueryParamsUtil .createExtraQueryParams(
@@ -95,6 +116,16 @@ internal object DropboxAuthIntent {
95116 */
96117 const val EXTRA_AUTH_STATE : String = " AUTH_STATE"
97118
119+ /* *
120+ * Used for internal authentication logic. The targetSdk version of the application using the Dropbox SDK Java.
121+ */
122+ const val EXTRA_TARGET_SDK_VERSION : String = " TARGET_SDK_VERSION"
123+
124+ /* *
125+ * Used for internal authentication logic. The version of this Dropbox SDK Java.
126+ */
127+ const val EXTRA_DROPBOX_SDK_JAVA_VERSION : String = " DROPBOX_SDK_JAVA_VERSION"
128+
98129 /* *
99130 * Used for internal authentication. Allows app to request a specific UID to auth against
100131 * You won't ever have to use this.
0 commit comments