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
17package com.android.packageinstaller.permission.ui;
18
19import android.app.Fragment;
20import android.content.Intent;
21import android.os.Bundle;
22import android.util.Log;
23
24import com.android.packageinstaller.DeviceUtils;
25import com.android.packageinstaller.permission.ui.handheld.ManageStandardPermissionsFragment;
26import com.android.packageinstaller.permission.ui.wear.AppPermissionsFragmentWear;
27
28public final class ManagePermissionsActivity extends OverlayTouchActivity {
29    private static final String LOG_TAG = "ManagePermissionsActivity";
30
31    public static final String EXTRA_ALL_PERMISSIONS =
32            "com.android.packageinstaller.extra.ALL_PERMISSIONS";
33
34    @Override
35    public void onCreate(Bundle savedInstanceState) {
36        super.onCreate(savedInstanceState);
37
38        if (savedInstanceState != null) {
39            return;
40        }
41
42        Fragment fragment;
43        String action = getIntent().getAction();
44
45        switch (action) {
46            case Intent.ACTION_MANAGE_PERMISSIONS: {
47                if (DeviceUtils.isTelevision(this)) {
48                    fragment = com.android.packageinstaller.permission.ui.television
49                            .ManagePermissionsFragment.newInstance();
50                } else {
51                    fragment = ManageStandardPermissionsFragment.newInstance();
52                }
53            } break;
54
55            case Intent.ACTION_MANAGE_APP_PERMISSIONS: {
56                String packageName = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME);
57                if (packageName == null) {
58                    Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PACKAGE_NAME");
59                    finish();
60                    return;
61                }
62                if (DeviceUtils.isWear(this)) {
63                    fragment = AppPermissionsFragmentWear.newInstance(packageName);
64                } else if (DeviceUtils.isTelevision(this)) {
65                    fragment = com.android.packageinstaller.permission.ui.television
66                            .AppPermissionsFragment.newInstance(packageName);
67                } else {
68                    final boolean allPermissions = getIntent().getBooleanExtra(
69                            EXTRA_ALL_PERMISSIONS, false);
70                    if (allPermissions) {
71                        fragment = com.android.packageinstaller.permission.ui.handheld
72                                .AllAppPermissionsFragment.newInstance(packageName);
73                    } else {
74                        fragment = com.android.packageinstaller.permission.ui.handheld
75                                .AppPermissionsFragment.newInstance(packageName);
76                    }
77                }
78            } break;
79
80            case Intent.ACTION_MANAGE_PERMISSION_APPS: {
81                String permissionName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_NAME);
82                if (permissionName == null) {
83                    Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PERMISSION_NAME");
84                    finish();
85                    return;
86                }
87                if (DeviceUtils.isTelevision(this)) {
88                    fragment = com.android.packageinstaller.permission.ui.television
89                            .PermissionAppsFragment.newInstance(permissionName);
90                } else {
91                    fragment = com.android.packageinstaller.permission.ui.handheld
92                            .PermissionAppsFragment.newInstance(permissionName);
93                }
94            } break;
95
96            default: {
97                Log.w(LOG_TAG, "Unrecognized action " + action);
98                finish();
99                return;
100            }
101        }
102
103        getFragmentManager().beginTransaction().replace(android.R.id.content, fragment).commit();
104    }
105}
106