gpt4 book ai didi

java - 连接互联网/WiFi 时运行代码

转载 作者:行者123 更新时间:2023-11-29 21:01:37 26 4
gpt4 key购买 nike

我一整天都遇到了一个大问题。我有一个应用程序,它在设备启动时立即运行,唯一的问题是该应用程序需要互联网连接才能启动,并且在应用程序启动之前未连接 wifi。所以我使用 BroadcastReceiver 和 WifiManager 的组合来确定是否有 WiFi 连接。我唯一的问题是,如果它通过了连接测试,那么我想在 MainActivity.java 中运行 onCreate。

我该怎么做?我是 Java 的新手,对这整件事很困惑,但很快就明白了。

我的 MainActivity.java 中有这段代码:

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.example.com");

}

下面是 SMSReceiver.Java 中的代码:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiManager;

public class SMSReceiver extends BroadcastReceiver
{


@Override
public void onReceive(Context context, Intent intent) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
if(wifiManager.isWifiEnabled()){
//Call onCreate in MainActivity.java
}
}

}

这是 list 代码:

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SMSReceiver"
android:label="@string/title_activity_smsreceiver" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

我做错了什么?

更新

我将 SMSReceiver 更改为接收器而不是像这样的 Activity :

<receiver android:name=".SMSReceiver ">
<intent-filter>
<action android:name="android.intent.action.YOUR_FILTER_OR_SOME_STANDARD" />
</intent-filter>
</receiver>

现在我该怎么办?

最佳答案

是的,我同意@alpinescrambler 关于你的 list 声明应该是这样的,你想观察连接变化

<receiver android:name=".SMSReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>

您还应该在 list 中添加此权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

如果您想观察所有网络变化,请检查一下

    public class SMSReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, SMSReceiver.class.getSimpleName() +"\naction: " + intent.getAction());
if(isOnline(context) == true) {
//do your staff
context.startActivity(new Intent(context, MainActivity.class));
}
}

boolean isOnline(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}

}

关于java - 连接互联网/WiFi 时运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25941362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com