Skip to content
This repository was archived by the owner on Jan 10, 2025. It is now read-only.

Commit e849ce3

Browse files
author
Sergey Vasilinets
committed
Use ActivityContracts in WorkManagerSample
bug: 208344986 Test: Manual
1 parent a875356 commit e849ce3

File tree

3 files changed

+13
-33
lines changed

3 files changed

+13
-33
lines changed

WorkManagerSample/app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ dependencies {
5353
implementation project(path: ':lib')
5454

5555
implementation deps.kotlin.stdlib
56+
implementation deps.activity.activity_ktx
5657
implementation deps.work.runtime_ktx
5758
implementation deps.app_compat
5859
implementation deps.cardview

WorkManagerSample/app/src/main/java/com/example/background/SelectImageActivity.kt

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
package com.example.background
1818

1919
import android.Manifest
20-
import android.app.Activity
21-
import android.content.Intent
2220
import android.content.pm.PackageManager
2321
import android.os.Build
2422
import android.os.Bundle
@@ -28,13 +26,15 @@ import android.text.Spanned
2826
import android.text.method.LinkMovementMethod
2927
import android.util.Log
3028
import android.view.View
29+
import androidx.activity.result.PickVisualMediaRequest
30+
import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia
31+
import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia.ImageOnly
3132
import androidx.annotation.VisibleForTesting
3233
import androidx.appcompat.app.AppCompatActivity
3334
import androidx.core.app.ActivityCompat
3435
import androidx.core.content.ContextCompat
3536
import com.example.background.databinding.ActivitySelectBinding
3637
import com.google.android.material.snackbar.Snackbar
37-
import java.util.ArrayList
3838

3939
/**
4040
* Helps select an image for the [FilterActivity] and handles permission requests.
@@ -46,6 +46,13 @@ class SelectImageActivity : AppCompatActivity() {
4646
private var permissionRequestCount = 0
4747
private var hasPermissions = false
4848

49+
private val pickPictureCallback = registerForActivityResult(PickVisualMedia()) { uri ->
50+
if (uri == null)
51+
Log.e(TAG, "Invalid input image Uri.")
52+
else
53+
startActivity(FilterActivity.newIntent(this, uri))
54+
}
55+
4956
override fun onCreate(savedInstanceState: Bundle?) {
5057
super.onCreate(savedInstanceState)
5158
val binding = ActivitySelectBinding.inflate(layoutInflater).apply {
@@ -69,11 +76,7 @@ class SelectImageActivity : AppCompatActivity() {
6976
requestPermissionsIfNecessary()
7077

7178
binding.selectImage.setOnClickListener {
72-
val chooseIntent = Intent(
73-
Intent.ACTION_PICK,
74-
MediaStore.Images.Media.EXTERNAL_CONTENT_URI
75-
)
76-
startActivityForResult(chooseIntent, REQUEST_CODE_IMAGE)
79+
pickPictureCallback.launch(PickVisualMediaRequest(ImageOnly))
7780
}
7881

7982
binding.selectStockImage.setOnClickListener {
@@ -90,18 +93,6 @@ class SelectImageActivity : AppCompatActivity() {
9093
outState.putInt(KEY_PERMISSIONS_REQUEST_COUNT, permissionRequestCount)
9194
}
9295

93-
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
94-
super.onActivityResult(requestCode, resultCode, data)
95-
if (resultCode == Activity.RESULT_OK && data != null) {
96-
when (requestCode) {
97-
REQUEST_CODE_IMAGE -> handleImageRequestResult(data)
98-
else -> Log.d(TAG, "Unknown request code.")
99-
}
100-
} else {
101-
Log.e(TAG, String.format("Unexpected Result code \"%s\" or missing data.", resultCode))
102-
}
103-
}
104-
10596
override fun onRequestPermissionsResult(
10697
requestCode: Int,
10798
permissions: Array<String>,
@@ -139,17 +130,6 @@ class SelectImageActivity : AppCompatActivity() {
139130
}
140131
}
141132

142-
private fun handleImageRequestResult(data: Intent) {
143-
// Get the imageUri the user picked, from the Intent.ACTION_PICK result.
144-
val imageUri = data.clipData!!.getItemAt(0).uri
145-
146-
if (imageUri == null) {
147-
Log.e(TAG, "Invalid input image Uri.")
148-
return
149-
}
150-
startActivity(FilterActivity.newIntent(this, imageUri))
151-
}
152-
153133
private fun checkAllPermissions(): Boolean {
154134
var hasPermissions = true
155135
for (permission in sPermissions) {
@@ -166,7 +146,6 @@ class SelectImageActivity : AppCompatActivity() {
166146
private const val KEY_PERMISSIONS_REQUEST_COUNT = "KEY_PERMISSIONS_REQUEST_COUNT"
167147

168148
private const val MAX_NUMBER_REQUEST_PERMISSIONS = 2
169-
private const val REQUEST_CODE_IMAGE = 100
170149
private const val REQUEST_CODE_PERMISSIONS = 101
171150

172151
// A list of permissions the application needs.

WorkManagerSample/versions.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ versions.rxjava2 = "2.2.21"
6363
versions.timber = "4.7.1"
6464
versions.transition = "1.4.1"
6565
versions.truth = "1.1.3"
66-
versions.work = "2.7.1"
66+
versions.work = "2.8.1"
6767
ext.versions = versions
6868

6969
def build_versions = [:]

0 commit comments

Comments
 (0)