WiFiDirectDemo: fix no peer in list after m-release
After m-release, location permission is necessary for getting wifi scan results, including p2p scan results. Bug: 113998459 Test: manual test with two devices Change-Id: I0f7e3578108c690bea382c41abd28b98fd1d5d31
This commit is contained in:
@@ -16,17 +16,20 @@
|
||||
|
||||
package com.example.android.wifidirect;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.wifi.p2p.WifiP2pConfig;
|
||||
import android.net.wifi.p2p.WifiP2pDevice;
|
||||
import android.net.wifi.p2p.WifiP2pManager;
|
||||
import android.net.wifi.p2p.WifiP2pManager.ActionListener;
|
||||
import android.net.wifi.p2p.WifiP2pManager.Channel;
|
||||
import android.net.wifi.p2p.WifiP2pManager.ChannelListener;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
@@ -48,6 +51,9 @@ import com.example.android.wifidirect.DeviceListFragment.DeviceActionListener;
|
||||
public class WiFiDirectActivity extends Activity implements ChannelListener, DeviceActionListener {
|
||||
|
||||
public static final String TAG = "wifidirectdemo";
|
||||
|
||||
private static final int PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION = 1001;
|
||||
|
||||
private WifiP2pManager manager;
|
||||
private boolean isWifiP2pEnabled = false;
|
||||
private boolean retryChannel = false;
|
||||
@@ -63,6 +69,19 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
|
||||
this.isWifiP2pEnabled = isWifiP2pEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions,
|
||||
int[] grantResults) {
|
||||
switch (requestCode) {
|
||||
case PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION:
|
||||
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
|
||||
Log.e(TAG, "Coarse location permission is not granted!");
|
||||
finish();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -77,6 +96,15 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
|
||||
|
||||
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
|
||||
channel = manager.initialize(this, getMainLooper(), null);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||||
&& checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||
!= PackageManager.PERMISSION_GRANTED) {
|
||||
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
|
||||
WiFiDirectActivity.PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION);
|
||||
// After this point you wait for callback in
|
||||
// onRequestPermissionsResult(int, String[], int[]) overridden method
|
||||
}
|
||||
}
|
||||
|
||||
/** register the BroadcastReceiver with the intent values to be matched */
|
||||
|
||||
Reference in New Issue
Block a user