1abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler/* 2abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * Copyright (C) 2016 The Android Open Source Project 3abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * 4abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 5abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * you may not use this file except in compliance with the License. 6abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * You may obtain a copy of the License at 7abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * 8abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * http://www.apache.org/licenses/LICENSE-2.0 9abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * 10abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * Unless required by applicable law or agreed to in writing, software 11abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 12abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * See the License for the specific language governing permissions and 14abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler * limitations under the License 15abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler */ 16abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 174f78e1fa55255a261247e9a112bc4433cd1a9ab0Philip P. Moltmannpackage com.android.packageinstaller.television; 18abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 19abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.app.Fragment; 20abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.content.Intent; 21abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.os.Bundle; 22abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.provider.Settings; 2374fa089b8c39d84b737607a3e3d2cde4d3b42d24Philip P. Moltmannimport android.support.annotation.Nullable; 24abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.util.Log; 25abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.view.LayoutInflater; 26abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.view.View; 27abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.view.ViewGroup; 28abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.widget.Button; 29abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport android.widget.TextView; 30abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 31abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport com.android.packageinstaller.PackageUtil; 32abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerimport com.android.packageinstaller.R; 33abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 34abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantlerpublic class UninstallAppProgressFragment extends Fragment implements View.OnClickListener, 35abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler UninstallAppProgress.ProgressFragment { 36abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler private static final String TAG = "UninstallAppProgressF"; // full class name is too long 37abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 38abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler private Button mOkButton; 39abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler private Button mDeviceManagerButton; 40abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler private Button mUsersButton; 41abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 42abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler @Override 43abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 44abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler Bundle savedInstanceState) { 45abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler final View root = inflater.inflate(R.layout.uninstall_progress, container, false); 46abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler // Initialize views 47abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler View snippetView = root.findViewById(R.id.app_snippet); 48abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler PackageUtil.initSnippetForInstalledApp(getContext(), 49abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler ((UninstallAppProgress)getActivity()).getAppInfo(), snippetView); 50abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mDeviceManagerButton = (Button) root.findViewById(R.id.device_manager_button); 51abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mUsersButton = (Button) root.findViewById(R.id.users_button); 52abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mDeviceManagerButton.setVisibility(View.GONE); 53abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mDeviceManagerButton.setOnClickListener(new View.OnClickListener() { 54abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler @Override 55abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler public void onClick(View v) { 56abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler Intent intent = new Intent(); 57abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler intent.setClassName("com.android.settings", 58abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler "com.android.settings.Settings$DeviceAdminSettingsActivity"); 59abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK); 60abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler startActivity(intent); 61abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler getActivity().finish(); 62abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler } 63abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler }); 64abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mUsersButton.setVisibility(View.GONE); 65abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mUsersButton.setOnClickListener(new View.OnClickListener() { 66abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler @Override 67abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler public void onClick(View v) { 68abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler Intent intent = new Intent(Settings.ACTION_USER_SETTINGS); 69abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK); 70abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler startActivity(intent); 71abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler getActivity().finish(); 72abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler } 73abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler }); 74abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler // Hide button till progress is being displayed 75abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mOkButton = (Button) root.findViewById(R.id.ok_button); 76abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mOkButton.setOnClickListener(this); 77abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 78abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler return root; 79abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler } 80abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 81abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler public void onClick(View v) { 82abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler final UninstallAppProgress activity = (UninstallAppProgress) getActivity(); 83abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler if(v == mOkButton && activity != null) { 84abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler Log.i(TAG, "Finished uninstalling pkg: " + 85abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler activity.getAppInfo().packageName); 86abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler activity.setResultAndFinish(); 87abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler } 88abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler } 89abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 90abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler @Override 91abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler public void setUsersButtonVisible(boolean visible) { 92abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mUsersButton.setVisibility(visible ? View.VISIBLE : View.GONE); 93abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler } 94abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 95abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler @Override 96abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler public void setDeviceManagerButtonVisible(boolean visible) { 97abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler mDeviceManagerButton.setVisibility(visible ? View.VISIBLE : View.GONE); 98abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler } 99abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler 100abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler @Override 101abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler public void showCompletion(CharSequence statusText) { 102abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler final View root = getView(); 103abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler root.findViewById(R.id.progress_view).setVisibility(View.GONE); 104abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler root.findViewById(R.id.status_view).setVisibility(View.VISIBLE); 105abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler ((TextView) root.findViewById(R.id.status_text)).setText(statusText); 106abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler root.findViewById(R.id.ok_panel).setVisibility(View.VISIBLE); 107abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler } 108abf56631187491de2e5b558910f0a20d8fc0ee78Tony Mantler} 109