如果没有互联网连接,如何防止我的小部件运行?

时间:2011-05-17 07:33:33

标签: android widget

我正在制作天气小工具。如果我在主屏幕上安装小部件,应用程序配置将自动启动。如果没有wifi或3g,我想阻止配置运行。我在AppWidgetProvider的实例中使用了ConnectivityManager,但它没有用。我在小部件配置的java类中使用了ConnectivityManager,但它仍然无法使用错误消息“..意外停止”。谁可以帮助我?

2 个答案:

答案 0 :(得分:1)

您是否在清单文件中添加了使用权限以访问网络状态?如果没有,你应该添加它们。

答案 1 :(得分:0)

您需要向Manifest添加网络权限以检查网络可用性。并且不要忘记互联网权限。

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

这是一个检查网络可用性的辅助类:

import android.app.Service;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class NetworkUtils
{ 
    public static boolean isOnline(Service service)
    {
        ConnectivityManager mgr = (ConnectivityManager) service.getSystemService(Context.CONNECTIVITY_SERVICE);

        return isOnline(mgr);
    }

    public static boolean isOnline(Context context)
    {
        ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

        return isOnline(mgr);
    }

    private static boolean isOnline(ConnectivityManager mgr)
    {
        NetworkInfo netInfo = mgr.getActiveNetworkInfo();

        if (netInfo != null && netInfo.isConnected())
        {
            return true;
        }

        return false;
    }
}