【问题标题】:my app with broadcast receiver and wifi我的应用程序带有广播接收器和 wifi
【发布时间】:2014-03-24 13:50:37
【问题描述】:

我,这是我第一个使用 android 的应用程序,我正在尝试与硬件通信,因为对我来说这很令人兴奋!

当我禁用 wifi 或更改网络时......我需要烤面包和振动。怎么了???

我使用 Galaxy s2 4.1.2 测试我的应用,但我希望我的应用能够在使用 android 2.3.3 的旧手机上运行。

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="dado.wifibc"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.VIBRATE"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <receiver 
        android:name="dado.wifibc.BroadCastReceiver">
        <intent-filter>
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
            <action android:name="android.net.wifi.STATE_CHANGE"/>
        </intent-filter>
    </receiver>
</application>

</manifest>

BroadCastReceiver.java

package dado.wifibc;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Vibrator;
import android.widget.Toast;

public class BroadCastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Toast.makeText(context, "blablabla!!!.",Toast.LENGTH_LONG).show();

    // Vibrate the mobile phone
    Vibrator vibrator = (Vibrator)   context.getSystemService(Context.VIBRATOR_SERVICE);
    vibrator.vibrate(2000);
}

}

【问题讨论】:

  • i want my app able to run on old phones with android 2.3.3. 那么,有什么问题呢?请在您的帖子中添加一个问题。

标签: android broadcastreceiver android-wifi


【解决方案1】:

请从意图过滤器中删除操作并将操作设置为“android.net.conn.CONNECTIVITY_CHANGE”,例如,

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

    </intent-filter>

和 onReceive(),

           final ConnectivityManager connMgr = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            final android.net.NetworkInfo wifi = connMgr
                    .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

                    if (!wifi.isAvailable())
             {

              Toast.makeText(context, "blablabla!!!.",Toast.LENGTH_LONG).show();

        // Vibrate the mobile phone
         Vibrator vibrator = (Vibrator)   context.getSystemService(Context.VIBRATOR_SERVICE);
        vibrator.vibrate(2000);
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多