1326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang/* 2326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * Copyright (C) 2016 The Android Open Source Project 3326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * 4326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * Licensed under the Apache License, Version 2.0 (the "License"); 5326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * you may not use this file except in compliance with the License. 6326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * You may obtain a copy of the License at 7326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * 8326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * http://www.apache.org/licenses/LICENSE-2.0 9326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * 10326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * Unless required by applicable law or agreed to in writing, software 11326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * distributed under the License is distributed on an "AS IS" BASIS, 12326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * See the License for the specific language governing permissions and 14326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * limitations under the License. 15326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang */ 16326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang 17326f083b4cf9867930d5ce21904498ec746c7e23Walter Jangpackage com.android.contacts.common.activity; 18326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang 19326f083b4cf9867930d5ce21904498ec746c7e23Walter Jangimport android.Manifest.permission; 20326f083b4cf9867930d5ce21904498ec746c7e23Walter Jangimport android.app.Activity; 21326f083b4cf9867930d5ce21904498ec746c7e23Walter Jangimport android.content.Intent; 2218f1d7fd4014c0a9334fcb3c1dbdfc55b11af09dWalter Jangimport android.os.Bundle; 23326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang 24326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang/** 25326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * Requests permissions that are not absolutely required by the calling Activity; 26326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * if permissions are denied, the calling Activity is still restarted. 27326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * 28326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * Activities that have a set of permissions that must be granted in order for the Activity to 29326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * function propertly should call 30326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * {@link RequestPermissionsActivity#startPermissionActivity(Activity, String[], Class)} 31326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * before calling {@link RequestDesiredPermissionsActivity#startPermissionActivity(Activity)}. 32326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang */ 33326f083b4cf9867930d5ce21904498ec746c7e23Walter Jangpublic class RequestDesiredPermissionsActivity extends RequestPermissionsActivityBase { 34326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang 35326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang private static final String[] DESIRED_PERMISSIONS = new String[] { 36326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang permission.ACCESS_FINE_LOCATION, 37326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang permission.READ_CALENDAR, 38326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang permission.READ_SMS, 39326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang }; 40326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang 41326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang @Override 42326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang protected String[] getRequiredPermissions() { 43326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang return DESIRED_PERMISSIONS; 44326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang } 45326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang 46326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang @Override 47326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang protected String[] getDesiredPermissions() { 48326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang return DESIRED_PERMISSIONS; 49326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang } 50326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang 51326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang /** 52326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * If any desired permissions the Contacts app needs are missing, open an Activity 53326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * to prompt the user for these permissions. 54326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * 55326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang * This is designed to be called inside {@link android.app.Activity#onCreate} 56326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang */ 57326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang public static boolean startPermissionActivity(Activity activity) { 5818f1d7fd4014c0a9334fcb3c1dbdfc55b11af09dWalter Jang final Bundle extras = activity.getIntent().getExtras(); 5918f1d7fd4014c0a9334fcb3c1dbdfc55b11af09dWalter Jang if (extras != null && extras.getBoolean(STARTED_PERMISSIONS_ACTIVITY, false)) { 60326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang return false; 61326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang } 62326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang return startPermissionActivity(activity, DESIRED_PERMISSIONS, 63326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang RequestDesiredPermissionsActivity.class); 64326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang } 65326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang 66326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang @Override 67326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang public void onRequestPermissionsResult( 68326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang int requestCode, String permissions[], int[] grantResults) { 69326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang mPreviousActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 70326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang startActivity(mPreviousActivityIntent); 71326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang overridePendingTransition(0, 0); 72326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang 73326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang finish(); 74326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang overridePendingTransition(0, 0); 75326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang } 76326f083b4cf9867930d5ce21904498ec746c7e23Walter Jang}