我有一个 android 应用程序,当用户安装它并且运行这个应用程序时,如果设备可以访问互联网,我希望能够启动一项服务。
这是我的 mainfest.xml 服务和广播内容
<receiver android:name="com.google.audiancelistening.WifiChangedBrodcast" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
对于此解决方案,当打开 wifi 时,此广播将成功执行,但我想在我的应用程序的第一个启动它,所以我在我的活动中添加了以下代码:
if(isInternetOn()){
Intent inten = new Intent(getApplicationContext(), ConnectionService.class);
getApplicationContext().startService(inten);
writeToSDFile();
android.os.Process.killProcess(android.os.Process.myPid());
} else{
writeToSDFile();
android.os.Process.killProcess(android.os.Process.myPid());
}
isInternetOn() 方法是一种检查互联网访问的方法,如下所示:
public final boolean isInternetOn() {
ConnectivityManager connec = null;
connec = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if ( connec != null){
NetworkInfo result = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (result != null && result.isConnectedOrConnecting());
return true;
}
return false;
}
但是当我的活动执行并且首先访问互联网时,这将无法成功运行,并且当我关闭并打开我的 wifi 服务时启动并成功运行。:( 我不知道我的解决方案是什么,但我没有任何例外。