Merge "p2p: check device capabilities before launching this app" am: f15d5b7741

Change-Id: I77a864948b834c7c19c6f3391d08698cd3266b95
This commit is contained in:
Jimmy Chen
2020-05-28 02:27:34 +00:00
committed by Automerger Merge Worker
2 changed files with 76 additions and 4 deletions

View File

@@ -23,6 +23,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.WifiManager;
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pManager;
@@ -82,6 +83,40 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
}
}
private boolean initP2p() {
// Device capability definition check
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT)) {
Log.e(TAG, "Wi-Fi Direct is not supported by this device.");
return false;
}
// Hardware capability check
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifiManager == null) {
Log.e(TAG, "Cannot get Wi-Fi system service.");
return false;
}
if (!wifiManager.isP2pSupported()) {
Log.e(TAG, "Wi-Fi Direct is not supported by the hardware or Wi-Fi is off.");
return false;
}
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
if (manager == null) {
Log.e(TAG, "Cannot get Wi-Fi Direct system service.");
return false;
}
channel = manager.initialize(this, getMainLooper(), null);
if (channel == null) {
Log.e(TAG, "Cannot initialize Wi-Fi Direct.");
return false;
}
return true;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -94,8 +129,9 @@ public class WiFiDirectActivity extends Activity implements ChannelListener, Dev
intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
channel = manager.initialize(this, getMainLooper(), null);
if (!initP2p()) {
finish();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)

View File

@@ -9,6 +9,7 @@ import android.content.Context;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.WpsInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pInfo;
@@ -101,6 +102,40 @@ public class WiFiServiceDiscoveryActivity extends Activity implements
}
}
private boolean initP2p() {
// Device capability definition check
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT)) {
Log.e(TAG, "Wi-Fi Direct is not supported by this device.");
return false;
}
// Hardware capability check
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifiManager == null) {
Log.e(TAG, "Cannot get Wi-Fi system service.");
return false;
}
if (!wifiManager.isP2pSupported()) {
Log.e(TAG, "Wi-Fi Direct is not supported by the hardware or Wi-Fi is off.");
return false;
}
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
if (manager == null) {
Log.e(TAG, "Cannot get Wi-Fi Direct system service.");
return false;
}
channel = manager.initialize(this, getMainLooper(), null);
if (channel == null) {
Log.e(TAG, "Cannot initialize Wi-Fi Direct.");
return false;
}
return true;
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -115,8 +150,9 @@ public class WiFiServiceDiscoveryActivity extends Activity implements
intentFilter
.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
channel = manager.initialize(this, getMainLooper(), null);
if (!initP2p()) {
finish();
}
servicesList = new WiFiDirectServicesList();
getFragmentManager().beginTransaction()