- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
"-6ren"> "-很多人已经问过这个问题,但对他们有用的解决方案对我来说并不适用。我在Android 8.1和Android 9.0上测试过,无法获取到SSID的名称。 用于获取 WiFi 状态更改的广播接收器: pr-6ren">
很多人已经问过这个问题,但对他们有用的解决方案对我来说并不适用。我在Android 8.1和Android 9.0上测试过,无法获取到SSID的名称。
用于获取 WiFi 状态更改的广播接收器:
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION) ||
intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION) ||
intent.getAction().equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION) ||
intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION) ||
intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
setWifiIndicator();
}
}
};
接收者已注册onCreate
并在 onDestroy
中未注册,我认为这是正确的,并且在调用接收器时我看到了日志行。
在onCreate
:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ScannerService.ACTION_READ_SCANNER);
intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
intentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
intentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
registerReceiver(mReceiver, intentFilter);
setWifiIndicator();
setWifiIndicator
是这样实现的:
private void setWifiIndicator() {
ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//getApplicationContext solves memory leak issues prior to Android N (must use Application Context to get wifi system service.
WifiManager wifiMgr = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
ImageView wifiIndicator = (ImageView)findViewById(R.id.wifi_indicator);
TextView wifiSSID = (TextView)findViewById(R.id.wifi_ssid);
try {
if (wifiMgr != null) {
if (wifiMgr.isWifiEnabled()) {
//wifi is enabled. toggle on wifi indicator.
wifiIndicator.setImageResource(R.drawable.wifi_indicator);
String ssid = wifiMgr.getConnectionInfo().getSSID();
if (ssid != null) {
Log.v(this.getClass().getSimpleName(), "SSID: " + ssid + " Supplicant State: " + info.getSupplicantState());
wifiSSID.setText(ssid);
}
} else {
//wifi is disabled. toggle off wifi indicator.
wifiSSID.setText("");
//check for 3G
NetworkInfo mobileInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mobileInfo != null && mobileInfo.getState().equals(NetworkInfo.State.CONNECTED)) {
wifiIndicator.setImageResource(R.drawable.cellular_indicator);
} else {
wifiIndicator.setImageResource(R.drawable.down_indicator);
}
}
} else {
//check for 3G
NetworkInfo mobileInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mobileInfo != null && mobileInfo.getState().equals(NetworkInfo.State.CONNECTED)) {
wifiIndicator.setImageResource(R.drawable.cellular_indicator);
} else {
wifiIndicator.setImageResource(R.drawable.down_indicator);
}
}
} catch(Exception e) {
//catching anything thrown in this block just so it doesn't crash the program unnecessarily
e.printStackTrace();
}
}
我的应用程序已经获得了 ACCESS_COARSE_LOCATION
的许可但我还添加了 ACCESS_FINE_LOCATION
万一。 getSSID()
直到回来<unknown ssid>
.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.GET_TASKS" />
可能跟编译目标SDK有关?我在这里真的一无所知。
渐变文件:
应用插件:'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.noneofyour.business"
minSdkVersion 15
targetSdkVersion 28
versionCode 59
versionName "1.44"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation files('libs/android.jar')
}
最佳答案
无线网络权限
Android 8.0 和 Android 8.1:
成功调用 WifiManager.getScanResults() 需要以下任一权限:
• ACCESS_FINE_LOCATION• ACCESS_COARSE_LOCATION• CHANGE_WIFI_STATE
如果调用应用程序没有任何这些权限,调用将失败并出现 SecurityException。
安卓 9:
成功调用 WifiManager.startScan() 需要满足以下所有条件:
• 您的应用具有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限。• 您的应用程序具有CHANGE_WIFI_STATE 权限。• 设备上启用了位置服务(在“设置”>“位置”下)。
Android 10(API 级别 29)及更高版本:
成功调用 WifiManager.startScan() 需要满足以下所有条件:
• 如果您的应用以 Android 10(API 级别 29)SDK 或更高版本为目标平台,则您的应用具有 ACCESS_FINE_LOCATION 权限。
• 如果您的应用的目标 SDK 低于 Android 10(API 级别 29),则您的应用具有 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 权限。
• 您的应用具有 CHANGE_WIFI_STATE 权限。
• 设备上启用了位置服务(在“设置”>“位置”下)。
并Request User级权限实现
有关详细信息,请参阅此链接:https://developer.android.com/guide/topics/connectivity/wifi-scan#wifi-scan-permissions
XAMARIN FORMS 代码更改:
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.O){status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);if (status != PermissionStatus.Granted){ var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Location });status = results[Permission.Location];}}
关于java - WiFi getSSID() 总是返回 "<unknown ssid>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54736828/
我需要在 android 上检查当前连接的 wifi SSID。我分别使用 Oreo 8.1.0 和 Oreo 8.0 检查了诺基亚 6 和 OnePlus 5。其他具有不同操作系统版本的手机可以正常
我正在一所大学建立无线网络,在那里我们拥有广泛的用户类型,例如学生(有些是毕业类(class),有些是 PG、博士生和其他人);支持人员、教职员工、常驻员工(及其家人)。 我必须在设计无线网络时牢记所
我想通过android应用程序测试wifi连接,检查输入的wifi ssid和密码是否正确。如何检查给定的 ssid 和密码是否正确? 最佳答案 这是我们在应用程序中所做的: 我们确保 wifi 已启
我正在尝试在后台获取 wifi ssid。 虽然它在前台,但效果很好。 但是当它进入后台时,在我的前台服务中,它返回。 当然是获得Location权限的。 是否可以在该服务中获取 ssid?
我需要在android中获取连接的wifi的SSID。当wifi网络改变时我需要获取SSID。 我搜索了很多关于这个的东西,但我没有得到正确的答案。 我了解到,此任务需要一个广播接收器。但我不知道如何
我正在尝试显示当前的 SSID(并最终捕获它以便日后使用) 到目前为止,我已经能够编译以下代码 - 但我无法显示它,并且每次运行它时应用程序强制关闭。我知道我忽略了一些简单的事情。任何帮助是极大的赞赏
借助这个Connectivity Plugin ,我可以使用以下代码获取连接状态,即移动网络、wifi 或无: import 'dart:async'; import 'package:flutter
我们正在开发无线 n/w 配置 UI,需要检查 SSID 是否有效?字符集有限制吗?长度 ?还有什么.. 最佳答案 802.11-2007 规范 (http://standards.ieee.org/
我的代码遇到了一个奇怪的问题,我无法弄清楚,尽管我确信它一定很简单。我的代码中有一个 if 语句,它将当前连接的网络名称与字符串进行比较。我遇到的问题是,即使 SSID 与字符串匹配,它也不会执行 i
我认为我遇到了权限问题,无法从连接获取 SSID。 我尝试过这种方法: WifiManager wifiManager = (WifiManager)getApplicationContext().g
我想要一个应用程序在使用 Toast 消息连接到 wifi 时显示 WIFI SSID,并且我也希望这种情况在终止状态下发生,我该怎么做。谢谢!提前回复主要 Activity public class
我已经使用 WifiManager 扫描可用的 wifi, mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
问题如下 - 大学校园范围内的 wifi 连接只有一个 SSID,比如说“campus-wifi”。用户在校园内自由漫游,接入点之间通常会发生切换。我的问题是,在网络堆栈的任何层是否有任何信息允许客户
如果设备能够看到特定的网络/SSID,我需要找到一种方法让我的应用程序做出不同的 react 。我已将 SSID 嵌入到我的应用程序中,但我找不到查看可用网络和比较其 SSID 的方法。 感谢您的帮助
当我想验证 Android 设备是否已连接到特定 Wi-Fi(由 SSID 标识)并且同时有一个 Activity 的移动数据网络时,我遇到了一些奇怪的问题。也有可能我的问题与 Android 9 (
重复问题 - How to get my wifi hotspot ssid in my current android system很抱歉重复这个问题,但它仍然没有答案。我的手机处于网络共享模式,所
我正在尝试按照 the documentation 在我的 android things raspberry pi 上设置 wifi . 我的 Ssid 名称中包含一个空格,让我们说“我的 ssid”
您好,我正在寻找一个简单的代码来读取 SSID,我找到了很多关于“SystemConfiguration/CaptiveNetwork.h”的信息但是我怎么用它,我不明白。对不起,我是一个新的 Obj
是否有可能在 iPhone 上使用 Monotouch 连接的 WIFI SSID? 我找到了检查 Wi-Fi 状态的可能性,但无法检查 SSID。 https://github.com/xamari
有多个网站生成二维码以连接到 Android 的特定 Wi-Fi 网络:例如http://www.barcode.com/qrcode.html?view=qrcode 我正在寻找 iPhone 的类
我是一名优秀的程序员,十分优秀!