1 /* 2 * Copyright (C) 2017 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.settings.intelligence.suggestions.eligibility; 18 19 import android.content.Context; 20 import android.content.pm.ResolveInfo; 21 import android.net.ConnectivityManager; 22 import android.net.NetworkInfo; 23 import androidx.annotation.VisibleForTesting; 24 import android.util.Log; 25 26 public class ConnectivityEligibilityChecker { 27 28 /** 29 * If defined, only display this optional step if a connection is available. 30 */ 31 @VisibleForTesting 32 static final String META_DATA_IS_CONNECTION_REQUIRED = 33 "com.android.settings.require_connection"; 34 private static final String TAG = "ConnectivityEligibility"; 35 isEligible(Context context, String id, ResolveInfo info)36 public static boolean isEligible(Context context, String id, ResolveInfo info) { 37 final boolean isConnectionRequired = 38 info.activityInfo.metaData.getBoolean(META_DATA_IS_CONNECTION_REQUIRED); 39 if (!isConnectionRequired) { 40 return true; 41 } 42 final ConnectivityManager cm = 43 (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 44 NetworkInfo netInfo = cm.getActiveNetworkInfo(); 45 boolean satisfiesConnectivity = netInfo != null && netInfo.isConnectedOrConnecting(); 46 if (!satisfiesConnectivity) { 47 Log.i(TAG, id + " is missing required connection."); 48 } 49 return satisfiesConnectivity; 50 } 51 } 52