Bug: 148514485 Test: Manually verified the toggle from Settings Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.wifi Change-Id: I0a55b7212c97c11d50b0a05eec743e8ebe9ea6d8
117 lines
4.2 KiB
Java
117 lines
4.2 KiB
Java
/*
|
|
* Copyright (C) 2018 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package com.android.settings.wifi;
|
|
|
|
import android.app.Activity;
|
|
import android.app.Dialog;
|
|
import android.app.settings.SettingsEnums;
|
|
import android.content.ActivityNotFoundException;
|
|
import android.content.ContentResolver;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.content.Intent;
|
|
import android.net.wifi.WifiManager;
|
|
import android.os.Bundle;
|
|
import android.text.TextUtils;
|
|
import android.util.Log;
|
|
import android.widget.Toast;
|
|
|
|
import androidx.annotation.VisibleForTesting;
|
|
import androidx.appcompat.app.AlertDialog;
|
|
|
|
import com.android.settings.R;
|
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
|
import com.android.settingslib.HelpUtils;
|
|
|
|
public class WifiScanningRequiredFragment extends InstrumentedDialogFragment implements
|
|
DialogInterface.OnClickListener {
|
|
|
|
private static final String TAG = "WifiScanReqFrag";
|
|
|
|
public static WifiScanningRequiredFragment newInstance() {
|
|
WifiScanningRequiredFragment fragment = new WifiScanningRequiredFragment();
|
|
return fragment;
|
|
}
|
|
|
|
@Override
|
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(getContext())
|
|
.setTitle(R.string.wifi_settings_scanning_required_title)
|
|
.setView(R.layout.wifi_settings_scanning_required_view)
|
|
.setPositiveButton(R.string.wifi_settings_scanning_required_turn_on, this)
|
|
.setNegativeButton(R.string.cancel, null);
|
|
addButtonIfNeeded(builder);
|
|
|
|
return builder.create();
|
|
}
|
|
|
|
@Override
|
|
public int getMetricsCategory() {
|
|
return SettingsEnums.WIFI_SCANNING_NEEDED_DIALOG;
|
|
}
|
|
|
|
@Override
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
Context context = getContext();
|
|
ContentResolver contentResolver = context.getContentResolver();
|
|
switch(which) {
|
|
case DialogInterface.BUTTON_POSITIVE:
|
|
context.getSystemService(WifiManager.class).setScanAlwaysAvailable(true);
|
|
Toast.makeText(
|
|
context,
|
|
context.getString(R.string.wifi_settings_scanning_required_enabled),
|
|
Toast.LENGTH_SHORT).show();
|
|
getTargetFragment().onActivityResult(
|
|
getTargetRequestCode(),
|
|
Activity.RESULT_OK,
|
|
null);
|
|
break;
|
|
case DialogInterface.BUTTON_NEUTRAL:
|
|
openHelpPage();
|
|
break;
|
|
case DialogInterface.BUTTON_NEGATIVE:
|
|
default:
|
|
// do nothing
|
|
}
|
|
}
|
|
|
|
void addButtonIfNeeded(AlertDialog.Builder builder) {
|
|
// Only show "learn more" if there is a help page to show
|
|
if (!TextUtils.isEmpty(getContext().getString(R.string.help_uri_wifi_scanning_required))) {
|
|
builder.setNeutralButton(R.string.learn_more, this);
|
|
}
|
|
}
|
|
|
|
private void openHelpPage() {
|
|
Intent intent = getHelpIntent(getContext());
|
|
if (intent != null) {
|
|
try {
|
|
startActivity(intent);
|
|
} catch (ActivityNotFoundException e) {
|
|
Log.e(TAG, "Activity was not found for intent, " + intent.toString());
|
|
}
|
|
}
|
|
}
|
|
|
|
@VisibleForTesting
|
|
Intent getHelpIntent(Context context) {
|
|
return HelpUtils.getHelpIntent(
|
|
context,
|
|
context.getString(R.string.help_uri_wifi_scanning_required),
|
|
context.getClass().getName());
|
|
}
|
|
}
|