From 2e1f06e5917163d1832f32ca9539e4fa57c04cc0 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Thu, 22 Aug 2019 11:07:24 +0800 Subject: [PATCH] WiFiDirectDemo: update permission requirement After Q-release, WiFi Direct requires FINE location permission. Bug: 139787683 Test: build and launch Change-Id: I4599ab24498f07fe0dd9873a356d8f8b34502fff --- samples/WiFiDirectDemo/AndroidManifest.xml | 2 +- .../wifidirect/WiFiDirectActivity.java | 12 +++---- .../AndroidManifest.xml | 8 +++-- .../WiFiServiceDiscoveryActivity.java | 33 ++++++++++++++++++- 4 files changed, 44 insertions(+), 11 deletions(-) diff --git a/samples/WiFiDirectDemo/AndroidManifest.xml b/samples/WiFiDirectDemo/AndroidManifest.xml index 44985e89b..759c4cc38 100644 --- a/samples/WiFiDirectDemo/AndroidManifest.xml +++ b/samples/WiFiDirectDemo/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java b/samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java index aaec70828..01ab7d73c 100644 --- a/samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java +++ b/samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java @@ -52,7 +52,7 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev public static final String TAG = "wifidirectdemo"; - private static final int PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION = 1001; + private static final int PERMISSIONS_REQUEST_CODE_ACCESS_FINE_LOCATION = 1001; private WifiP2pManager manager; private boolean isWifiP2pEnabled = false; @@ -73,9 +73,9 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { - case PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION: + case PERMISSIONS_REQUEST_CODE_ACCESS_FINE_LOCATION: if (grantResults[0] != PackageManager.PERMISSION_GRANTED) { - Log.e(TAG, "Coarse location permission is not granted!"); + Log.e(TAG, "Fine location permission is not granted!"); finish(); } break; @@ -98,10 +98,10 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev channel = manager.initialize(this, getMainLooper(), null); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M - && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) + && checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, - WiFiDirectActivity.PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION); + requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, + WiFiDirectActivity.PERMISSIONS_REQUEST_CODE_ACCESS_FINE_LOCATION); // After this point you wait for callback in // onRequestPermissionsResult(int, String[], int[]) overridden method } diff --git a/samples/WiFiDirectServiceDiscovery/AndroidManifest.xml b/samples/WiFiDirectServiceDiscovery/AndroidManifest.xml index 17e4fd555..672f5cf4d 100644 --- a/samples/WiFiDirectServiceDiscovery/AndroidManifest.xml +++ b/samples/WiFiDirectServiceDiscovery/AndroidManifest.xml @@ -4,7 +4,8 @@ android:versionCode="1" android:versionName="1.0" > - + + @@ -12,10 +13,11 @@ + - + @@ -30,4 +32,4 @@ - \ No newline at end of file + diff --git a/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiServiceDiscoveryActivity.java b/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiServiceDiscoveryActivity.java index 20e85cb6e..5a53163e6 100644 --- a/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiServiceDiscoveryActivity.java +++ b/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiServiceDiscoveryActivity.java @@ -1,11 +1,13 @@ package com.example.android.wifidirect.discovery; +import android.Manifest; import android.app.Activity; import android.app.Fragment; import android.content.BroadcastReceiver; import android.content.Context; import android.content.IntentFilter; +import android.content.pm.PackageManager; import android.net.wifi.WpsInfo; import android.net.wifi.p2p.WifiP2pConfig; import android.net.wifi.p2p.WifiP2pDevice; @@ -18,6 +20,7 @@ import android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener; import android.net.wifi.p2p.WifiP2pManager.DnsSdTxtRecordListener; import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo; import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -57,6 +60,9 @@ public class WiFiServiceDiscoveryActivity extends Activity implements public static final int MESSAGE_READ = 0x400 + 1; public static final int MY_HANDLE = 0x400 + 2; + + private static final int PERMISSIONS_REQUEST_CODE = 1001; + private WifiP2pManager manager; static final int SERVER_PORT = 4545; @@ -80,6 +86,21 @@ public class WiFiServiceDiscoveryActivity extends Activity implements this.handler = handler; } + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, + int[] grantResults) { + switch (requestCode) { + case PERMISSIONS_REQUEST_CODE: + if (grantResults[0] != PackageManager.PERMISSION_GRANTED) { + Log.e(TAG, "Fine location permission is not granted!"); + finish(); + } else { + startRegistrationAndDiscovery(); + } + break; + } + } + /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { @@ -96,12 +117,22 @@ public class WiFiServiceDiscoveryActivity extends Activity implements manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); channel = manager.initialize(this, getMainLooper(), null); - startRegistrationAndDiscovery(); servicesList = new WiFiDirectServicesList(); getFragmentManager().beginTransaction() .add(R.id.container_root, servicesList, "services").commit(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M + && checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) + != PackageManager.PERMISSION_GRANTED) { + requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, + PERMISSIONS_REQUEST_CODE); + // After this point you wait for callback in + // onRequestPermissionsResult(int, String[], int[]) overridden method + } else { + startRegistrationAndDiscovery(); + } + } @Override