• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 
17 package com.android.packageinstaller.permission.ui;
18 
19 import android.app.Fragment;
20 import android.content.Intent;
21 import android.os.Bundle;
22 import android.util.Log;
23 import android.view.MenuItem;
24 
25 import com.android.packageinstaller.DeviceUtils;
26 import com.android.packageinstaller.R;
27 import com.android.packageinstaller.permission.ui.handheld.ManageStandardPermissionsFragment;
28 import com.android.packageinstaller.permission.ui.wear.AppPermissionsFragmentWear;
29 
30 public final class ManagePermissionsActivity extends OverlayTouchActivity {
31     private static final String LOG_TAG = "ManagePermissionsActivity";
32 
33     public static final String EXTRA_ALL_PERMISSIONS =
34             "com.android.packageinstaller.extra.ALL_PERMISSIONS";
35 
36     @Override
onCreate(Bundle savedInstanceState)37     public void onCreate(Bundle savedInstanceState) {
38         if (DeviceUtils.isAuto(this)) {
39             setTheme(R.style.CarSettingTheme);
40         }
41         super.onCreate(savedInstanceState);
42 
43         if (savedInstanceState != null) {
44             return;
45         }
46 
47         Fragment fragment;
48         String action = getIntent().getAction();
49 
50         switch (action) {
51             case Intent.ACTION_MANAGE_PERMISSIONS: {
52                 if (DeviceUtils.isTelevision(this)) {
53                     fragment = com.android.packageinstaller.permission.ui.television
54                             .ManagePermissionsFragment.newInstance();
55                 } else {
56                     fragment = ManageStandardPermissionsFragment.newInstance();
57                 }
58             } break;
59 
60             case Intent.ACTION_MANAGE_APP_PERMISSIONS: {
61                 String packageName = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME);
62                 if (packageName == null) {
63                     Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PACKAGE_NAME");
64                     finish();
65                     return;
66                 }
67                 if (DeviceUtils.isAuto(this)) {
68                     fragment = com.android.packageinstaller.permission.ui.auto
69                             .AppPermissionsFragment.newInstance(packageName);
70                 } else if (DeviceUtils.isWear(this)) {
71                     fragment = AppPermissionsFragmentWear.newInstance(packageName);
72                 } else if (DeviceUtils.isTelevision(this)) {
73                     fragment = com.android.packageinstaller.permission.ui.television
74                             .AppPermissionsFragment.newInstance(packageName);
75                 } else {
76                     final boolean allPermissions = getIntent().getBooleanExtra(
77                             EXTRA_ALL_PERMISSIONS, false);
78                     if (allPermissions) {
79                         fragment = com.android.packageinstaller.permission.ui.handheld
80                                 .AllAppPermissionsFragment.newInstance(packageName);
81                     } else {
82                         fragment = com.android.packageinstaller.permission.ui.handheld
83                                 .AppPermissionsFragment.newInstance(packageName);
84                     }
85                 }
86             } break;
87 
88             case Intent.ACTION_MANAGE_PERMISSION_APPS: {
89                 String permissionName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_NAME);
90                 if (permissionName == null) {
91                     Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PERMISSION_NAME");
92                     finish();
93                     return;
94                 }
95                 if (DeviceUtils.isTelevision(this)) {
96                     fragment = com.android.packageinstaller.permission.ui.television
97                             .PermissionAppsFragment.newInstance(permissionName);
98                 } else {
99                     fragment = com.android.packageinstaller.permission.ui.handheld
100                             .PermissionAppsFragment.newInstance(permissionName);
101                 }
102             } break;
103 
104             default: {
105                 Log.w(LOG_TAG, "Unrecognized action " + action);
106                 finish();
107                 return;
108             }
109         }
110 
111         getFragmentManager().beginTransaction().replace(android.R.id.content, fragment).commit();
112     }
113 
114     @Override
onOptionsItemSelected(MenuItem item)115     public boolean onOptionsItemSelected(MenuItem item) {
116         // in automotive mode, there's no system wide back button, so need to add that
117         if (DeviceUtils.isAuto(this)) {
118             switch (item.getItemId()) {
119                 case android.R.id.home:
120                     onBackPressed();
121                     return true;
122                 default:
123                     return super.onOptionsItemSelected(item);
124             }
125         }
126         return super.onOptionsItemSelected(item);
127     }
128 }
129