From d53c10187a6b8db83f0d24cc0844a8a3e0707e46 Mon Sep 17 00:00:00 2001 From: Qitment Date: Mon, 29 Jan 2018 17:02:16 +0200 Subject: [PATCH] Add request permision location and check location is on it nead Android M+ --- app/build.gradle | 9 +- app/src/main/AndroidManifest.xml | 11 ++- ...ReenableAllApsWhenNetworkStateChanged.java | 2 +- .../farproc/wifi/connecter/TestWifiScan.java | 83 ++++++++++++++++++- build.gradle | 4 +- 5 files changed, 97 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9aa2b92..39ba8b7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 24 - buildToolsVersion "24.0.2" + compileSdkVersion 26 + buildToolsVersion "27.0.1" defaultConfig { applicationId "com.farproc.wifi.connecter" - minSdkVersion 3 - targetSdkVersion 14 + minSdkVersion 19 + targetSdkVersion 26 versionCode 16 versionName "2.0.3" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" @@ -24,4 +24,5 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) + compile "com.android.support:appcompat-v7:26.1.0" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aeb1535..8bb5999 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,8 +31,11 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto"> - - + + + + + declaration. Step2: Run > Edit Configurations... > General > Launch Options > Launch:Specified Activity & Activity:com.farproc.wifi.connecter.TestWifiScan --> - + configurations = wifiMgr.getConfiguredNetworks(); if(configurations != null) { for(final WifiConfiguration config:configurations) { diff --git a/app/src/main/java/com/farproc/wifi/connecter/TestWifiScan.java b/app/src/main/java/com/farproc/wifi/connecter/TestWifiScan.java index 1311a59..8aff889 100644 --- a/app/src/main/java/com/farproc/wifi/connecter/TestWifiScan.java +++ b/app/src/main/java/com/farproc/wifi/connecter/TestWifiScan.java @@ -27,17 +27,27 @@ import java.util.List; +import android.Manifest; import android.app.Activity; +import android.app.AlertDialog; import android.app.ListActivity; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.PackageManager; +import android.location.LocationManager; import android.net.Uri; import android.net.wifi.ScanResult; import android.net.wifi.WifiManager; +import android.os.Build; import android.os.Bundle; +import android.provider.Settings; +import android.support.annotation.NonNull; +import android.support.v4.app.ActivityCompat; +import android.view.ContextThemeWrapper; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -55,8 +65,15 @@ public class TestWifiScan extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - mWifiManager = (WifiManager)getSystemService(WIFI_SERVICE); + + setLocationPermission(); + if(permisionLocationOn()) + { + checkLocationTurnOn(); + } + + + mWifiManager = (WifiManager)getApplicationContext().getSystemService(WIFI_SERVICE); setListAdapter(mListAdapter); @@ -171,4 +188,66 @@ private static void downloadWifiConnecter(final Activity activity) { } } } + public Boolean permisionLocationOn() { + boolean permissionGranted = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED; + if (permissionGranted) { + return true; + } else { + return false; + } + } + public void setLocationPermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + //requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, 1001); + ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1001); + } + + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + switch (requestCode) { + case 1001: { + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED + && (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED + || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)) { + //Start your service here + } + } + } + } + + public Boolean checkLocationTurnOn(){ + boolean onLocation=true; + boolean permissionGranted = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED; + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && permissionGranted) { + LocationManager lm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); + boolean gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); + if(!gps_enabled){ + onLocation =false; + AlertDialog.Builder dialog = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.PlatformDialog)); + //android.support.v7.app.AlertDialog.Builder dialog = new android.support.v7.app.AlertDialog.Builder(this); + dialog.setMessage("Please turn on your location"); + dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface paramDialogInterface, int paramInt) { + Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS); + startActivity(myIntent); + } + }); + dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface paramDialogInterface, int paramInt) { + + } + }); + dialog.show(); + } + } + return onLocation; + } } + diff --git a/build.gradle b/build.gradle index c20bca1..7e01a0a 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.2' + classpath 'com.android.tools.build:gradle:3.0.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -15,6 +16,7 @@ buildscript { allprojects { repositories { jcenter() + google() } }