• 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.contacts.common.activity;
18 
19 import com.android.contacts.common.R;
20 
21 import android.Manifest.permission;
22 import android.app.Activity;
23 import android.content.Intent;
24 import android.widget.Toast;
25 
26 /**
27  * Activity that requests permissions needed for activities exported from Contacts.
28  */
29 public class RequestPermissionsActivity extends RequestPermissionsActivityBase {
30 
31     private static final String[] REQUIRED_PERMISSIONS = new String[]{
32             // "Contacts" group. Without this permission, the Contacts app is useless.
33             permission.READ_CONTACTS,
34             // "Phone" group. This is only used in a few places such as QuickContactActivity and
35             // ImportExportDialogFragment. We could work around missing this permission with a bit
36             // of work.
37             permission.READ_CALL_LOG,
38     };
39 
40     @Override
getRequiredPermissions()41     protected String[] getRequiredPermissions() {
42         return REQUIRED_PERMISSIONS;
43     }
44 
45     @Override
getDesiredPermissions()46     protected String[] getDesiredPermissions() {
47         return new String[]{
48                 permission.ACCESS_FINE_LOCATION, // Location Group
49                 permission.READ_CONTACTS, // Contacts group
50                 permission.READ_CALL_LOG, // Permission group phone
51                 permission.READ_CALENDAR, // Calendar group
52                 permission.READ_SMS, // SMS group
53         };
54     }
55 
startPermissionActivity(Activity activity)56     public static boolean startPermissionActivity(Activity activity) {
57         return startPermissionActivity(activity, REQUIRED_PERMISSIONS,
58                 RequestPermissionsActivity.class);
59     }
60 
61     @Override
onRequestPermissionsResult( int requestCode, String permissions[], int[] grantResults)62     public void onRequestPermissionsResult(
63             int requestCode, String permissions[], int[] grantResults) {
64         if (permissions != null && permissions.length > 0
65                 && isAllGranted(permissions, grantResults)) {
66             mPreviousActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
67             startActivity(mPreviousActivityIntent);
68             finish();
69             overridePendingTransition(0, 0);
70         } else {
71             Toast.makeText(this, R.string.missing_required_permission, Toast.LENGTH_SHORT).show();
72             finish();
73         }
74     }
75 }
76