Merge "WiFiDirectDemo: update permission requirement"

This commit is contained in:
Treehugger Robot
2019-10-04 02:43:26 +00:00
committed by Gerrit Code Review
4 changed files with 44 additions and 11 deletions

View File

@@ -11,7 +11,7 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Google Play filtering -->
<uses-feature android:name="android.hardware.wifi.direct" android:required="true"/>

View File

@@ -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
}

View File

@@ -4,7 +4,8 @@
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="16" />
<!-- runtime permission check API is on Android 6.0 or higher -->
<uses-sdk android:minSdkVersion="23" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
@@ -12,10 +13,11 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Google Play filtering -->
<uses-feature android:name="android.hardware.wifi.direct" android:required="true"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
@@ -30,4 +32,4 @@
</activity>
</application>
</manifest>
</manifest>

View File

@@ -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