- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 wifi 广播接收器有问题。它没有收到任何东西,永远不会调用 onReceive。这是我的代码:
public final class WifiChangeReceiver extends BroadcastReceiver {
boolean portableHotspot = true;
@Override
public void onReceive(final Context context, Intent intent) {
boolean alreadyPresent = false;
String action = intent.getAction();
if(action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
WifiManager w = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
List<ScanResult> l = w.getScanResults();
myApp myApp = (myApp)context.getApplicationContext();
List<ScanResult> previousScan = new ArrayList<ScanResult>();
previousScan = myApp.getPreviousScan();
System.out.print("previousScan " + previousScan + "\n");
for (ScanResult r : l) {
if(r.SSID.equals("\""+"TinyBox"+"\"")) {
if(previousScan!=null) {
for (ScanResult previousScanElement : previousScan) {
if(previousScanElement.SSID.contains("\""+"TinyBox"+"\"")) {
alreadyPresent = true;
break;
}
}
}
if (!alreadyPresent) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Methods.connectToNetwork(context);
}
}, 5000);
alreadyPresent = false;
}
}
}
myApp.setPreviousScan(l);
ConnectivityManager conMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo i = conMgr.getActiveNetworkInfo();
//Se non connesso a nessuna rete, allora tiro su TinyBox.
if (i == null) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i = conMgr.getActiveNetworkInfo();
if (i == null) {
boolean portableHotspot = false;
final SQLiteDatabase db = DatabaseManager.getInstance(context).getWritableDatabase();
Cursor c = HotSpotActivation.getHotSpotState(db);
if (c.getCount() > 0) {
String activation = c.getString(c.getColumnIndex(HotSpotActivation.CHECK_STATE));
if (activation.equals("ON")) {
portableHotspot = true;
}
else {
portableHotspot = false;
}
}
if (portableHotspot) {
Methods.setWirelessHotSpot(context.getApplicationContext());
}
}
}
else {
}
}
else if(action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
int iTemp = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN);
checkState(iTemp);
}
else if(action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
DetailedState state=
((NetworkInfo)intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO)).getDetailedState();
changeState(state, context);
}
}
private void changeState(DetailedState aState, Context context) {
if (aState == DetailedState.SCANNING) {
Log.d("wifiSupplicanState", "SCANNING");
}
else if (aState == DetailedState.CONNECTING) {
Log.d("wifiSupplicanState", "CONNECTING");
}
else if(aState == DetailedState.OBTAINING_IPADDR) {
Log.d("wifiSupplicanState", "OBTAINING_IPADDR");
}
else if (aState == DetailedState.CONNECTED) {
Log.d("wifiSupplicanState", "CONNECTED");
}
else if (aState == DetailedState.DISCONNECTING) {
Log.d("wifiSupplicanState", "DISCONNECTING");
}
else if (aState == DetailedState.DISCONNECTED) {
myApp myApp = (myApp)context.getApplicationContext();
portableHotspot = myApp.getPortableHotspot();
if (portableHotspot) {
Methods.setWirelessHotSpot(context.getApplicationContext());
}
}
else if (aState == DetailedState.FAILED) {
}
}
public void checkState(int aInt) {
if (aInt == WifiManager.WIFI_STATE_ENABLING) {
Log.d("WifiManager", "WIFI_STATE_ENABLING");
}
else if (aInt== WifiManager.WIFI_STATE_ENABLED) {
Log.d("WifiManager", "WIFI_STATE_ENABLED");
}
else if (aInt == WifiManager.WIFI_STATE_DISABLING) {
Log.d("WifiManager", "WIFI_STATE_DISABLING");
}
else if (aInt == WifiManager.WIFI_STATE_DISABLED) {
Log.d("WifiManager", "WIFI_STATE_DISABLED");
}
}
}
和 list :
<uses-permission android:name="android.permission.INTERNET" />
<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_MULTICAST_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<receiver android:name="sample.broadcastreceivers.WifiChangeReceiver">
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"></action>
<action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE"></action>
<action android:name="android.net.wifi.STATE_CHANGE"></action>
<action android:name="android.net.wifi.SCAN_RESULTS"></action>
</intent-filter>
</receiver>
只有当我进入 wifi 设置菜单(列出网络的菜单)时,它才有效(在调用 Receive 时),没有按下任何东西,只是打开它。进入该菜单后,我立即开始从广播接收器接收消息,并且一切正常,没有任何原因。
问题出在哪里?这就像一个 Android 错误。我很确定以前有时使用相同的代码。谢谢
最佳答案
检查您的 AndroidManifest:您声明
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
?
关于android - Wifi Broadcastreceiver onreceive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032376/
是否可以让通知启动广播接收器? 我试过这段代码,但它不起作用。 通知已创建,但当我点击它时没有任何反应。 注意:当我将 notificationIntent 更改为从 MyBroadcastRecei
下面是我的 Java 代码和 XML 代码。有人可以告诉我为什么我的 onReceieve 方法永远不会被调用吗? Java: public class PopUPSMS extends Activi
onReceive 永远不会接到电话!我已经完成了这个工作,并且做了一些更改,现在我已经为此工作了 5 个小时,并且不知道当我向它发送短信时我的 onReceive 没有被调用! public voi
我正在尝试遵循这个例子: What is the correct way for sharing data among AppWidgetProvider and RemoteViewsService
我在 Activity 中创建了一个接收器,用于在连接互联网时自动调用网络服务。 代码如下 //Create receiver for while network will come auto cal
最近对Android开发很感兴趣, friend 给了我一本《Android应用开发傻瓜书》。在书中,有一个名为 Silent Toggle Mode 的示例应用程序。稍后它会教您为应用程序制作主屏幕
我在 mainfest.xml 中声明了我的 BroadcastReceiver 但从未调用过 onReceive() 方法。怎么了?我不想使用注册/注销方法。 Activity : Intent s
我有以下代码我想检测手机屏幕但是永远不会调用函数 onReceive谁能给我一个解决方案。请帮忙。如果有人有任何其他工作代码,请提供帮助。谢谢 package com.pack; import and
我创建了一个 broadcastreceiver 来 Hook 日历 EVENT_REMINDER 并获取有关事件的信息 public void onCreate(Bundle savedInstan
我读了这篇文章:Broadcast receiver onReceive() getting called multiple times 但我没有找到所需的答案。 我创建了一个小实用函数,它覆盖了 B
onReceive 方法中的线程在完成之前是否符合垃圾回收条件? @Override public void onReceive(final Context context, Intent inten
我正在使用此代码来检测屏幕何时被锁定并调用 toast,每次屏幕被锁定时它都会工作。但是,每当我离开应用程序时,它就会停止工作。它仅在应用程序打开时有效。 public class BatterySa
public class BroadcastTest extends Activity { BroadcastReceiver receiver; /** Called when the activi
我有一个从其他应用程序获取数据的服务。 当我得到日期时,我会向 broadCast 发送消息以刷新 UI。 多次调用onReceive方法,多次显示数据。 这是我的代码: DataService.ja
当我尝试接收的变量是@EnvironmentObject 的@Published 属性时,有什么方法可以防止在 View 最初加载时触发onReceive? 这是 View : struct Cont
我正在使用 Picker 来显示分段控件,并希望知道选择器值何时更改,以便我可以执行非 UI 操作。使用建议的 onReceive() 修饰符(如建议的 here )不起作用,因为每次渲染主体时都会调
我是 Android 初学者,遇到以下问题。我正在尝试从(不同的)应用程序 B 调用应用程序 A 注册的广播接收器。在应用程序 A 的广播接收器中,我实现了以下 onReceive() 方法,用于测试
我正在尝试开发一个短信应用程序。当我选择此应用程序作为默认短信应用程序并且当我收到带有此 SmsReceiver 代码的新短信时,会出现以下问题: 1) 每条新短信我都会收到 2 个 onReceiv
我正在设置一个内部BroadcastReceiver来获取 Activity 转换更新,例如步行、in_Vehicle。但 onReceive 方法永远不会被调用。 onCreate @Overri
我正在编写一个 Android 应用程序,它有一个受权限保护的广播接收器。广播接收器在接收来自经过身份验证的应用程序的请求时扫描硬编码 IP 地址的端口 80。它返回套接字连接尝试的结果。在我的代码中
我是一名优秀的程序员,十分优秀!