diff --git a/app/build.gradle b/app/build.gradle index 7fb31fd..0b10c11 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,7 +16,6 @@ allprojects { password System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") != null ? System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") : project.findProperty("vstsMavenAccessToken") } } - jcenter() } } @@ -29,12 +28,11 @@ android { keyPassword 'android' } } - compileSdkVersion 28 - buildToolsVersion "29.0.0" + compileSdkVersion 32 defaultConfig { applicationId "com.azuresamples.msalandroidkotlinapp" - minSdkVersion 19 - targetSdkVersion 28 + minSdkVersion 23 + targetSdkVersion 32 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -60,23 +58,22 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'androidx.core:core-ktx:1.1.0' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation 'com.google.android.material:material:1.0.0' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.2.0' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' - implementation 'com.android.volley:volley:1.1.1' + implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'androidx.core:core-ktx:1.8.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'com.google.android.material:material:1.6.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test:runner:1.5.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + implementation 'com.android.volley:volley:1.2.1' implementation 'androidx.legacy:legacy-support-v4:1.0.0' if (findProject(':msal') != null) { // For developer team only. localImplementation project(':msal') - externalImplementation 'com.microsoft.identity.client:msal:1.0.+' + externalImplementation 'com.microsoft.identity.client:msal:4.1.+' } else { // Downloads and Builds MSAL from maven central. - implementation 'com.microsoft.identity.client:msal:1.0.+' + implementation 'com.microsoft.identity.client:msal:4.1.+' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 64335bd..5bbc14c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,7 +14,7 @@ android:theme="@style/AppTheme"> @@ -23,7 +23,9 @@ - + diff --git a/app/src/main/java/com/azuresamples/msalandroidkotlinapp/B2CModeFragment.kt b/app/src/main/java/com/azuresamples/msalandroidkotlinapp/B2CModeFragment.kt index 17c3e0e..31be381 100644 --- a/app/src/main/java/com/azuresamples/msalandroidkotlinapp/B2CModeFragment.kt +++ b/app/src/main/java/com/azuresamples/msalandroidkotlinapp/B2CModeFragment.kt @@ -68,7 +68,7 @@ class B2CModeFragment : Fragment() { // Creates a PublicClientApplication object with res/raw/auth_config_single_account.json - PublicClientApplication.createMultipleAccountPublicClientApplication(context!!, + PublicClientApplication.createMultipleAccountPublicClientApplication(requireContext(), R.raw.auth_config_b2c, object : IMultipleAccountApplicationCreatedListener { override fun onCreated(application: IMultipleAccountPublicClientApplication) { @@ -94,7 +94,7 @@ class B2CModeFragment : Fragment() { private fun initializeUI() { val dataAdapter = ArrayAdapter( - context, android.R.layout.simple_spinner_item, + requireContext(), android.R.layout.simple_spinner_item, object : ArrayList() { init { for (policyName in B2CConfiguration.Policies) add(policyName) @@ -301,7 +301,7 @@ class B2CModeFragment : Fragment() { btn_acquireTokenSilently!!.isEnabled = false } val dataAdapter = ArrayAdapter( - context, android.R.layout.simple_spinner_item, + requireContext(), android.R.layout.simple_spinner_item, object : ArrayList() { init { for (user in users) add(user.displayName) diff --git a/app/src/main/java/com/azuresamples/msalandroidkotlinapp/B2CUser.kt b/app/src/main/java/com/azuresamples/msalandroidkotlinapp/B2CUser.kt index 1d4629e..e5e12de 100644 --- a/app/src/main/java/com/azuresamples/msalandroidkotlinapp/B2CUser.kt +++ b/app/src/main/java/com/azuresamples/msalandroidkotlinapp/B2CUser.kt @@ -30,7 +30,7 @@ import com.microsoft.identity.client.IMultipleAccountPublicClientApplication.Rem import com.microsoft.identity.client.SilentAuthenticationCallback import com.microsoft.identity.client.exception.MsalException import com.microsoft.identity.client.exception.MsalUiRequiredException -import com.microsoft.identity.common.internal.providers.oauth2.IDToken +import com.microsoft.identity.common.java.providers.oauth2.IDToken import java.util.* /** diff --git a/app/src/main/java/com/azuresamples/msalandroidkotlinapp/MultipleAccountModeFragment.kt b/app/src/main/java/com/azuresamples/msalandroidkotlinapp/MultipleAccountModeFragment.kt index 841065a..414317b 100644 --- a/app/src/main/java/com/azuresamples/msalandroidkotlinapp/MultipleAccountModeFragment.kt +++ b/app/src/main/java/com/azuresamples/msalandroidkotlinapp/MultipleAccountModeFragment.kt @@ -321,7 +321,7 @@ class MultipleAccountModeFragment : Fragment() { } val dataAdapter = ArrayAdapter( - context!!, android.R.layout.simple_spinner_item, + requireContext(), android.R.layout.simple_spinner_item, object : ArrayList() { init { for (account in result) diff --git a/app/src/main/java/com/azuresamples/msalandroidkotlinapp/SingleAccountModeFragment.kt b/app/src/main/java/com/azuresamples/msalandroidkotlinapp/SingleAccountModeFragment.kt index e5b6f6e..d8573b5 100644 --- a/app/src/main/java/com/azuresamples/msalandroidkotlinapp/SingleAccountModeFragment.kt +++ b/app/src/main/java/com/azuresamples/msalandroidkotlinapp/SingleAccountModeFragment.kt @@ -116,7 +116,7 @@ class SingleAccountModeFragment : Fragment() { * - the resource you're acquiring a token for has a stricter set of requirement than your SSO refresh token. * - you're introducing a new scope which the user has never consented for. */ - mSingleAccountApp!!.acquireToken(activity!!, getScopes(), getAuthInteractiveCallback()) + mSingleAccountApp!!.acquireToken(requireActivity(), getScopes(), getAuthInteractiveCallback()) }) btn_callGraphSilently.setOnClickListener(View.OnClickListener { @@ -266,15 +266,15 @@ class SingleAccountModeFragment : Fragment() { */ private fun callGraphAPI(authenticationResult: IAuthenticationResult) { MSGraphRequestWrapper.callGraphAPIWithVolley( - context as Context, + requireContext(), msgraph_url.text.toString(), authenticationResult.accessToken, - Response.Listener { response -> + { response -> /* Successfully called graph, process data and send to UI */ Log.d(TAG, "Response: $response") displayGraphResult(response) }, - Response.ErrorListener { error -> + { error -> Log.d(TAG, "Error: $error") displayError(error) }) diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml deleted file mode 100644 index fd7a058..0000000 --- a/app/src/main/res/values-v21/styles.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dd6c54b..089e711 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - My Application + MSAL Sample Open navigation drawer Close navigation drawer Android Studio diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 545b9c6..8cce7b9 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ -