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.messaging.util; 18 19 import android.app.Activity; 20 import android.app.AlertDialog; 21 import android.app.Dialog; 22 import android.content.Context; 23 import android.content.DialogInterface; 24 import android.os.UserManager; 25 import android.text.TextUtils; 26 27 import com.android.messaging.Factory; 28 import com.android.messaging.R; 29 import com.android.messaging.datamodel.DataModel; 30 import com.android.messaging.ui.conversation.ConversationActivity; 31 import com.android.messaging.ui.conversationlist.ConversationListActivity; 32 33 /** 34 * Utility class including logic to verify requirements to run Bugle and other activity startup 35 * logic. Called from base Bugle activity classes. 36 */ 37 public class BugleActivityUtil { 38 39 private static final int REQUEST_GOOGLE_PLAY_SERVICES = 0; 40 41 /** 42 * Determine if the requirements for the app to run are met. Log any Activity startup 43 * analytics. 44 * @param context 45 * @param activity is used to launch an error Dialog if necessary 46 * @return true if resume should continue normally. Returns false if some requirements to run 47 * are not met. 48 */ onActivityResume(Context context, Activity activity)49 public static boolean onActivityResume(Context context, Activity activity) { 50 DataModel.get().onActivityResume(); 51 Factory.get().onActivityResume(); 52 53 // Validate all requirements to run are met 54 return checkHasSmsPermissionsForUser(context, activity); 55 } 56 57 /** 58 * Determine if the user doesn't have SMS permissions. This can happen if you are not the phone 59 * owner and the owner has disabled your SMS permissions. 60 * @param context is the Context used to resolve the user permissions 61 * @param activity is the Activity used to launch an error Dialog if necessary 62 * @return true if the user has SMS permissions, otherwise false. 63 */ checkHasSmsPermissionsForUser(Context context, Activity activity)64 private static boolean checkHasSmsPermissionsForUser(Context context, Activity activity) { 65 if (!OsUtil.isAtLeastL()) { 66 // UserManager.DISALLOW_SMS added in L. No multiuser phones before this 67 return true; 68 } 69 UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); 70 if (userManager.hasUserRestriction(UserManager.DISALLOW_SMS)) { 71 new AlertDialog.Builder(activity) 72 .setMessage(R.string.requires_sms_permissions_message) 73 .setCancelable(false) 74 .setNegativeButton(R.string.requires_sms_permissions_close_button, 75 new DialogInterface.OnClickListener() { 76 @Override 77 public void onClick(final DialogInterface dialog, 78 final int button) { 79 System.exit(0); 80 } 81 }) 82 .show(); 83 return false; 84 } 85 return true; 86 } 87 } 88 89