[android] Replace deprecated startActivityForResult()

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
This commit is contained in:
Roman Tsisyk 2023-03-24 11:17:03 +02:00
parent 0050b1b560
commit 1a304a4906
3 changed files with 23 additions and 31 deletions

View file

@ -12,6 +12,8 @@ import android.widget.CheckBox;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -42,8 +44,6 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
{
private static final String TAG = DownloadResourcesLegacyActivity.class.getSimpleName();
private static final int REQ_CODE_API_RESULT = 10;
public static final String EXTRA_COUNTRY = "country";
// Error codes, should match the same codes in JNI
@ -64,6 +64,9 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
@Nullable
private MapTask mMapTaskToForward;
@NonNull
private ActivityResultLauncher<Intent> mApiRequest;
private boolean mAreResourcesDownloaded;
private static final int DOWNLOAD = 0;
@ -194,6 +197,10 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
super.onSafeCreate(savedInstanceState);
setContentView(R.layout.activity_download_resources);
initViewsAndListeners();
mApiRequest = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
setResult(result.getResultCode(), result.getData());
finish();
});
if (prepareFilesDownload(false))
{
@ -213,6 +220,8 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
protected void onSafeDestroy()
{
super.onSafeDestroy();
mApiRequest.unregister();
mApiRequest = null;
Utils.keepScreenOn(false, getWindow());
if (mCountryDownloadListenerSlot != 0)
{
@ -359,7 +368,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
if (ParsedMwmRequest.getCurrentRequest() != null)
{
// Wait for the result from MwmActivity for API callers.
UiUtils.startActivityForResult(this, intent, REQ_CODE_API_RESULT);
mApiRequest.launch(intent);
return;
}
}
@ -368,16 +377,6 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
finish();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQ_CODE_API_RESULT)
{
setResult(resultCode, data);
finish();
}
}
private void finishFilesDownload(int result)
{
if (result == ERR_NO_MORE_FILES)

View file

@ -9,6 +9,8 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
@ -34,7 +36,6 @@ public class SplashActivity extends AppCompatActivity implements BaseActivity
private static final String TAG = SplashActivity.class.getSimpleName();
private static final String EXTRA_ACTIVITY_TO_START = "extra_activity_to_start";
public static final String EXTRA_INITIAL_INTENT = "extra_initial_intent";
private static final int REQ_CODE_API_RESULT = 10;
private static final long DELAY = 100;
@ -43,6 +44,8 @@ public class SplashActivity extends AppCompatActivity implements BaseActivity
@SuppressWarnings("NotNullFieldNotInitialized")
@NonNull
private ActivityResultLauncher<String[]> mPermissionRequest;
@NonNull
private ActivityResultLauncher<Intent> mApiRequest;
@NonNull
private final Runnable mInitCoreDelayedTask = new Runnable()
@ -79,6 +82,10 @@ public class SplashActivity extends AppCompatActivity implements BaseActivity
setContentView(R.layout.activity_splash);
mPermissionRequest = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(),
result -> Config.setLocationRequested());
mApiRequest = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
setResult(result.getResultCode(), result.getData());
finish();
});
}
@Override
@ -138,6 +145,8 @@ public class SplashActivity extends AppCompatActivity implements BaseActivity
mBaseDelegate.onDestroy();
mPermissionRequest.unregister();
mPermissionRequest = null;
mApiRequest.unregister();
mApiRequest = null;
}
private void showFatalErrorDialog(@StringRes int titleId, @StringRes int messageId)
@ -195,7 +204,7 @@ public class SplashActivity extends AppCompatActivity implements BaseActivity
if (!initialIntent.hasCategory(Intent.CATEGORY_LAUNCHER))
{
// Wait for the result from MwmActivity for API callers.
startActivityForResult(result, REQ_CODE_API_RESULT);
mApiRequest.launch(result);
return;
}
}
@ -204,16 +213,6 @@ public class SplashActivity extends AppCompatActivity implements BaseActivity
finish();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQ_CODE_API_RESULT)
{
setResult(resultCode, data);
finish();
}
}
@Override
@NonNull
public Activity get()

View file

@ -539,12 +539,6 @@ public final class UiUtils
}
}
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/3630
public static void startActivityForResult(@NonNull AppCompatActivity activity, @NonNull Intent intent, int requestCode)
{
activity.startActivityForResult(intent, requestCode);
}
@SuppressWarnings("deprecation") // https://github.com/organicmaps/organicmaps/issues/3630
public static void startActivityForResult(@NonNull Fragment fragment, @NonNull Intent intent, int requestCode)
{