Files
app_Settings/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java
ot_hemant.yadav 9a72877c7c Crash happens if back button is pressed during "Format as Portable"
SD card format as internal, during migrate process press back key or  During "Format as Portable", 
press back key crash happened.

Fix:
Hide the bottom navigation from that particular activity so that user can not accidentally 
press back key.
/packages/apps/Settings/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
/packages/apps/Settings/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java

Bug: 238596768
Test:
1. Insert sdcard or generate virtual disk using command : adb shell "sm set-virtual-disk true"
2. Go to Settings -> Storage -> SD Card -> Format as Internal -> move later
3. After step 1, back to storage
4. Again enter in Storage -> SD Card -> to do migrate data
5. during migrate process press back key
6. Storage -> SD Card -> Format as Portable
7. During "Format as Portable", press back key

Change-Id: I1f393ffb872bb90d7dfeb4e1c86648b3413645a1
2022-07-11 17:21:04 +00:00

107 lines
4.2 KiB
Java

/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.deviceinfo;
import static android.content.pm.PackageManager.EXTRA_MOVE_ID;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.MoveCallback;
import android.os.Bundle;
import android.os.Handler;
import android.os.storage.DiskInfo;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.android.settings.R;
import android.view.WindowManager;
public class StorageWizardMigrateProgress extends StorageWizardBase {
private static final String TAG = "StorageWizardMigrateProgress";
private static final String ACTION_FINISH_WIZARD = "com.android.systemui.action.FINISH_WIZARD";
private int mMoveId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mVolume == null) {
finish();
return;
}
setContentView(R.layout.storage_wizard_progress);
// hide the navigation bar for this activity only. So that user can not press back button accidentally.
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
decorView.setSystemUiVisibility(uiOptions);
//disable touch in activity so user can not make the hidden navigation bar visible.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
mMoveId = getIntent().getIntExtra(EXTRA_MOVE_ID, -1);
setIcon(R.drawable.ic_swap_horiz);
setHeaderText(R.string.storage_wizard_migrate_progress_v2_title);
setAuxChecklist();
setBackButtonVisibility(View.INVISIBLE);
setNextButtonVisibility(View.INVISIBLE);
// Register for updates and push through current status
getPackageManager().registerMoveCallback(mCallback, new Handler());
mCallback.onStatusChanged(mMoveId, getPackageManager().getMoveStatus(mMoveId), -1);
}
private final MoveCallback mCallback = new MoveCallback() {
@Override
public void onStatusChanged(int moveId, int status, long estMillis) {
if (mMoveId != moveId) return;
final Context context = StorageWizardMigrateProgress.this;
if (PackageManager.isMoveStatusFinished(status)) {
Log.d(TAG, "Finished with status " + status);
if (status == PackageManager.MOVE_SUCCEEDED) {
if (mDisk != null) {
// Kinda lame, but tear down that shiny finished
// notification, since user is still in wizard flow
final Intent finishIntent = new Intent(ACTION_FINISH_WIZARD);
finishIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
sendBroadcast(finishIntent);
if (!StorageWizardMigrateProgress.this.isFinishing()) {
final Intent intent = new Intent(context, StorageWizardReady.class);
intent.putExtra(DiskInfo.EXTRA_DISK_ID, mDisk.getId());
startActivity(intent);
}
}
} else {
Toast.makeText(context, getString(R.string.insufficient_storage),
Toast.LENGTH_LONG).show();
}
finishAffinity();
} else {
setCurrentProgress(status);
}
}
};
}