Merge "WiFiDirectDemo: update permission requirement"
This commit is contained in:
@@ -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"/>
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user