在我的应用程序中,如果连接了网络更改,我需要重新启动服务.目前它只能以一种方式工作(wifi到移动数据),但它不能以其他方式工作(移动数据到wifi.)为什么会这样?是因为我没有进入android.net.wifi.WIFI_STATE_CHANGED我的广播接收器或者可能是错位的许可?
谢谢你的帮助.
代码:接收器的清单条目:
<receiver
android:name="LiveForever"
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>
Run Code Online (Sandbox Code Playgroud)
接收器本身:
public static final int TYPE_WIFI = 1;
public static final int TYPE_MOBILE = 2;
public static final int TYPE_NOT_CONNECTED = 0;
public static final String PREFS_NAME = "cakecloudpreferences";
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, 0);
if (getConnectivityStatus(context)!=0&&!settings.getBoolean("osmframerunning",false)) {
context.stopService(new Intent(context, OSMFrame.class));
settings.edit().putBoolean("osmframerunning",false).commit();
Intent frameintent = new Intent(context,OSMFrame.class);
frameintent.putExtra("username",settings.getString("usr",""));
frameintent.putExtra("password",settings.getString("pswd",""));
frameintent.putExtra("uid",settings.getString("uid",""));
context.startService(frameintent);
Log.i("CCLiveForever","LiveForever Triggered, OSMFrame restarted."); …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建没有活动/服务的BroadcastReceiver.虽然当我删除活动时代码中存在活动时注册和执行代码没有问题,但它失败了.
我使用清单(!)注册BroadcastReceiver但是当从项目中删除活动时它没有被调用.
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name="com.ge.test.InstallsListener" >
<intent-filter>
<data android:scheme="package" />
<action android:name="android.intent.action.PACKAGE_ADDED" android:priority="100"/>
</intent-filter>
</receiver>
</application>
Run Code Online (Sandbox Code Playgroud)
谢谢.