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.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Google Play filtering --> <!-- Google Play filtering -->
<uses-feature android:name="android.hardware.wifi.direct" android:required="true"/> <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"; 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 WifiP2pManager manager;
private boolean isWifiP2pEnabled = false; private boolean isWifiP2pEnabled = false;
@@ -73,9 +73,9 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
public void onRequestPermissionsResult(int requestCode, String[] permissions, public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) { int[] grantResults) {
switch (requestCode) { switch (requestCode) {
case PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION: case PERMISSIONS_REQUEST_CODE_ACCESS_FINE_LOCATION:
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) { 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(); finish();
} }
break; break;
@@ -98,10 +98,10 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
channel = manager.initialize(this, getMainLooper(), null); channel = manager.initialize(this, getMainLooper(), null);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) && checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) { != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
WiFiDirectActivity.PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION); WiFiDirectActivity.PERMISSIONS_REQUEST_CODE_ACCESS_FINE_LOCATION);
// After this point you wait for callback in // After this point you wait for callback in
// onRequestPermissionsResult(int, String[], int[]) overridden method // onRequestPermissionsResult(int, String[], int[]) overridden method
} }

View File

@@ -4,7 +4,8 @@
android:versionCode="1" android:versionCode="1"
android:versionName="1.0" > 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.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_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.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Google Play filtering --> <!-- Google Play filtering -->
<uses-feature android:name="android.hardware.wifi.direct" android:required="true"/> <uses-feature android:name="android.hardware.wifi.direct" android:required="true"/>
<application <application
android:icon="@drawable/ic_launcher" android:icon="@drawable/ic_launcher"
android:label="@string/app_name" > android:label="@string/app_name" >
@@ -30,4 +32,4 @@
</activity> </activity>
</application> </application>
</manifest> </manifest>

View File

@@ -1,11 +1,13 @@
package com.example.android.wifidirect.discovery; package com.example.android.wifidirect.discovery;
import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.app.Fragment; import android.app.Fragment;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.WpsInfo; import android.net.wifi.WpsInfo;
import android.net.wifi.p2p.WifiP2pConfig; import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice; 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.WifiP2pManager.DnsSdTxtRecordListener;
import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo; import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceInfo;
import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest; import android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequest;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Message; 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 MESSAGE_READ = 0x400 + 1;
public static final int MY_HANDLE = 0x400 + 2; public static final int MY_HANDLE = 0x400 + 2;
private static final int PERMISSIONS_REQUEST_CODE = 1001;
private WifiP2pManager manager; private WifiP2pManager manager;
static final int SERVER_PORT = 4545; static final int SERVER_PORT = 4545;
@@ -80,6 +86,21 @@ public class WiFiServiceDiscoveryActivity extends Activity implements
this.handler = handler; 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. */ /** Called when the activity is first created. */
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@@ -96,12 +117,22 @@ public class WiFiServiceDiscoveryActivity extends Activity implements
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
channel = manager.initialize(this, getMainLooper(), null); channel = manager.initialize(this, getMainLooper(), null);
startRegistrationAndDiscovery();
servicesList = new WiFiDirectServicesList(); servicesList = new WiFiDirectServicesList();
getFragmentManager().beginTransaction() getFragmentManager().beginTransaction()
.add(R.id.container_root, servicesList, "services").commit(); .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 @Override