我一直在使用广播接收器开发一个没有UI的简单应用程序。
该应用不包含任何活动。
我已经给予了必要的许可。
我从这个网址中获取了代码:http://developerandro.blogspot.in/2013/09/check-internet-connection-using.html
当我点击更改wifi状态时,该应用程序显示吐司“未连接到互联网”。它工作正常。
但我的问题是我的清单文件中注册了一项我没有的活动。所以我从清单中删除了这些行。然后没有显示吐司,我也检查了日志。改变wifi状态时没有输出。
为什么会这样?请帮帮我们......
这是清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.broadcast_internetcheck"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.broadcast_internetcheck.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>
<receiver
android:name="com.example.broadcast_internetcheck.NetworkChangeReceiver"
android:label="NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
</application>
</manifest>
这是我的Broadcastreceiver类:
public class NetworkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(final Context context, final Intent intent) {
String status = NetworkUtil.getConnectivityStatusString(context);
/*Above line will return the status of wifi */
Toast.makeText(context, status, Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:8)
您需要为服务创建一个虚拟活动,该活动将在虚拟的onCreate()
中触发,可能是具有finish()
的非UI。
如果不这样做,则无法实现所需的实现,尤其是Android 3.1以上。
http://developer.android.com/about/versions/android-3.1.html#launchcontrols
Run only a background service when application start
Start android application without activity
http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html
关于服务的更多信息:
http://developer.android.com/guide/components/services.html
https://developer.android.com/training/run-background-service/create-service.html
http://www.vogella.com/tutorials/AndroidServices/article.html
答案 1 :(得分:1)
您可以改用service
。但是显示Toast
到service
位比较复杂,您可以通过notification
显示{{1>} 无互联网连接。
答案 2 :(得分:0)
如果您不想要任何活动,请查看此答案。实际上你必须为此创建服务:link
答案 3 :(得分:0)
创建透明活动。在活动处于活动状态时启动toast并立即完成活动。