Messages: Replace (Safe)AsyncTask
* AsyncTask is deprecated * Executors and Handlers can achieve the same thing and are not deprecated Change-Id: I5271bb73b848ce885eeaf5632c1da27853c56c4a
This commit is contained in:
@@ -46,10 +46,11 @@ import com.android.messaging.util.ContentType;
|
||||
import com.android.messaging.util.LogUtil;
|
||||
import com.android.messaging.util.MediaUtil;
|
||||
import com.android.messaging.util.MediaUtil.OnCompletionListener;
|
||||
import com.android.messaging.util.SafeAsyncTask;
|
||||
import com.android.messaging.util.ThreadUtil;
|
||||
import com.android.messaging.util.UiUtils;
|
||||
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/**
|
||||
* Hosts an audio recorder with tap and hold to record functionality.
|
||||
*/
|
||||
@@ -260,7 +261,7 @@ public class AudioRecordView extends FrameLayout implements
|
||||
// "tap+hold" to record audio.
|
||||
final Uri outputUri = stopRecording();
|
||||
if (outputUri != null) {
|
||||
SafeAsyncTask.executeOnThreadPool(() ->
|
||||
Executors.newSingleThreadExecutor().execute(() ->
|
||||
Factory.get().getApplicationContext().getContentResolver().delete(
|
||||
outputUri, null, null));
|
||||
}
|
||||
|
||||
@@ -34,9 +34,10 @@ import com.android.messaging.R;
|
||||
import com.android.messaging.datamodel.data.PendingAttachmentData;
|
||||
import com.android.messaging.util.ContentType;
|
||||
import com.android.messaging.util.LogUtil;
|
||||
import com.android.messaging.util.SafeAsyncTask;
|
||||
import com.android.messaging.util.UiUtils;
|
||||
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/**
|
||||
* Chooser which allows the user to select an existing contact from contacts apps on this device.
|
||||
* Note that this chooser requires the Manifest.permission.READ_CONTACTS which is one of the miminum
|
||||
@@ -71,7 +72,7 @@ class ContactMediaChooser extends MediaChooser {
|
||||
final Uri vCardUri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI,
|
||||
lookupKey);
|
||||
if (vCardUri != null) {
|
||||
SafeAsyncTask.executeOnThreadPool(() -> {
|
||||
Executors.newSingleThreadExecutor().execute(() -> {
|
||||
final PendingAttachmentData pendingItem =
|
||||
PendingAttachmentData.createPendingAttachmentData(
|
||||
ContentType.TEXT_X_VCARD.toLowerCase(), vCardUri);
|
||||
|
||||
@@ -19,6 +19,8 @@ package com.android.messaging.ui.mediapicker;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.PickVisualMediaRequest;
|
||||
@@ -33,10 +35,11 @@ import com.android.messaging.util.BugleGservicesKeys;
|
||||
import com.android.messaging.util.LogUtil;
|
||||
import com.android.messaging.util.FileUtil;
|
||||
import com.android.messaging.util.ImageUtils;
|
||||
import com.android.messaging.util.SafeAsyncTask;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/**
|
||||
* Wraps around the functionalities to allow the user to pick an image/video/audio from the document
|
||||
@@ -108,24 +111,24 @@ public class DocumentImagePicker {
|
||||
// Notify our listener with a PendingAttachmentData containing the metadata.
|
||||
// Asynchronously get the content type for the picked image since
|
||||
// ImageUtils.getContentType() potentially involves I/O and can be expensive.
|
||||
new SafeAsyncTask<Void, Void, String>() {
|
||||
@Override
|
||||
protected String doInBackgroundTimed(final Void... params) {
|
||||
if (FileUtil.isInPrivateDir(documentUri) &&
|
||||
!MediaScratchFileProvider.isMediaScratchSpaceUri(documentUri)) {
|
||||
// hacker sending private app data. Bail out
|
||||
if (LogUtil.isLoggable(LogUtil.BUGLE_TAG, LogUtil.ERROR)) {
|
||||
LogUtil.e(LogUtil.BUGLE_TAG, "Aborting attach of private app data ("
|
||||
+ documentUri + ")");
|
||||
}
|
||||
return null;
|
||||
ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||
Handler handler = new Handler(Looper.getMainLooper());
|
||||
executor.execute(() -> {
|
||||
final String contentType;
|
||||
if (FileUtil.isInPrivateDir(documentUri) &&
|
||||
!MediaScratchFileProvider.isMediaScratchSpaceUri(documentUri)) {
|
||||
// hacker sending private app data. Bail out
|
||||
if (LogUtil.isLoggable(LogUtil.BUGLE_TAG, LogUtil.ERROR)) {
|
||||
LogUtil.e(LogUtil.BUGLE_TAG, "Aborting attach of private app data ("
|
||||
+ documentUri + ")");
|
||||
}
|
||||
return ImageUtils.getContentType(
|
||||
contentType = null;
|
||||
} else {
|
||||
contentType = ImageUtils.getContentType(
|
||||
Factory.get().getApplicationContext().getContentResolver(), documentUri);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(final String contentType) {
|
||||
handler.post(() -> {
|
||||
if (contentType == null) {
|
||||
return; // bad uri on input
|
||||
}
|
||||
@@ -134,7 +137,7 @@ public class DocumentImagePicker {
|
||||
PendingAttachmentData.createPendingAttachmentData(contentType,
|
||||
documentUri);
|
||||
mListener.onDocumentSelected(pendingItem);
|
||||
}
|
||||
}.executeOnThreadPool();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,10 +26,10 @@ import com.android.messaging.datamodel.MediaScratchFileProvider;
|
||||
import com.android.messaging.util.Assert;
|
||||
import com.android.messaging.util.ContentType;
|
||||
import com.android.messaging.util.LogUtil;
|
||||
import com.android.messaging.util.SafeAsyncTask;
|
||||
import com.android.messaging.util.UiUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/**
|
||||
* Wraps around the functionalities of MediaRecorder, performs routine setup for audio recording
|
||||
@@ -147,7 +147,7 @@ public class LevelTrackingMediaRecorder {
|
||||
"media recorder. " + ex);
|
||||
if (mOutputUri != null) {
|
||||
final Uri outputUri = mOutputUri;
|
||||
SafeAsyncTask.executeOnThreadPool(() ->
|
||||
Executors.newSingleThreadExecutor().execute(() ->
|
||||
Factory.get().getApplicationContext().getContentResolver().delete(
|
||||
outputUri, null, null));
|
||||
mOutputUri = null;
|
||||
|
||||
Reference in New Issue
Block a user