如何在Android 9.0(PIE)中获取WIFI SSID?我的代码在android 8.1.0之前可以正常工作,但在android 9.0上却无法正常工作
Matrix matrix = new Matrix();
matrix.Translate(bitmap.Width / -2, bitmap.Height / -2, MatrixOrder.Append);
matrix.RotateAt(angle, new System.Drawing.Point(0, 0), MatrixOrder.Append);
matrix.Scale(2, 2, MatrixOrder.Append);
using (GraphicsPath graphicsPath = new GraphicsPath())
但是此代码在Android 9.0上不起作用
答案 0 :(得分:2)
更改Android版本9(Pie)要求(由用户)启用位置,否则即使您的应用程序具有正确的权限,对getConnectioInfo()的调用也会失败。 Android 9 changes(以下摘录)中对此进行了记录:
限制访问Wi-Fi位置和连接信息
在Android 9中,应用程序执行Wi-Fi扫描的权限要求比以前的版本更加严格。有关详细信息,请参阅Wi-Fi扫描限制。
类似的限制也适用于getConnectionInfo()方法,该方法返回描述当前Wi-Fi连接的WifiInfo对象。如果调用应用程序具有以下权限,则只能使用此对象的方法来检索SSID和BSSID值:
要检索SSID或BSSID,还需要在设备上启用位置服务(在“设置”>“位置”下)。
就我而言,在尝试读取WIFI SSID之前,我调用下面的函数(仅在Android 9+上运行),以检测是否启用了位置信息。
public static boolean isLocnEnabled(Context context) {
List locnProviders = null;
try {
LocationManager lm =(LocationManager) context.getApplicationContext().getSystemService(Activity.LOCATION_SERVICE);
locnProviders = lm.getProviders(true);
return (locnProviders.size() != 0);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (BuildConfig.DEBUG) {
if ((locnProviders == null) || (locnProviders.isEmpty()))
Log.d(TAG, "Location services disabled");
else
Log.d(TAG, "locnProviders: " + locnProviders.toString());
}
}
return(false);
}
如果未启用位置信息,我会弹出一个对话框,要求输入该信息,并允许用户跳至位置设置页面(请参见下面的代码):
context.startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
答案 1 :(得分:0)
这与权限相关。...由于API级别为27,因此您需要Dimension cs = new Dimension(jlp.getWidth() - 1, jlp.getHeight() - 1);
GrassPane gp = new GrassPane();
gp.setSize(cs);
jlp.add(gp);
gp.initializeDisplay();
jlp.setLayer(gp, 90);
LobbyPane lp = new LobbyPane(this);
lp.setSize(cs);
lp.initializeDisplay();
lp.initializeComponents();
jlp.add(lp);
jlp.setLayer(lp, 110);
或ACCESS_FINE_LOCATION
权限。对于Android 9,您可能还需要ACCESS_COARSE_LOCATION
(无论如何,https://developer.android.com/guide/topics/connectivity/wifi-scan都需要进行wifi扫描)
答案 2 :(得分:0)
您可以在具有位置权限的Android 8中访问与之连接的ssid wifi,但是在android 9中必须打开位置。 在这里阅读更多: https://developer.android.com/about/versions/pie/android-9.0-changes-all