2013-11-21 4 views
0

я получаю следующие ошибки:как проверить подключение к Интернету на заставке

  1. ACTION_WIRELESS_SETTINGS не может быть разрешен или не является полем (build = new Builder(Context);)

  2. контекст не может быть решена с переменной (build = new Builder(Context);)

  3. несоответствие типа: cannot convert from AnimatorSet.Builder to AlertDialog.Builder( startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));)

SplashScreen.java

public class SplashScreen extends Activity { 
static ConnectivityManager cm; 
AlertDialog dailog; 
AlertDialog.Builder build; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
build = new Builder(Context); 

if (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI) 
    .isConnectedOrConnecting() 
    || cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) 
      .isConnectedOrConnecting()// if connection is 
// there screen goes 
// to next screen 
// else shows 
// message toast 
) { 
Log.e("cm value", "" + cm.getAllNetworkInfo().toString()); 
Toast.makeText(SplashScreen.this, "Internet is active", 2000) 
     .show(); 
Thread mythread = new Thread() { 
    public void run() { 
     try { 

      sleep(5000); 

     } catch (Exception e) { 
     } finally { 
      Intent intent = new Intent(SplashScreen.this, 
        MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 
    } 
}; 
mythread.start(); 
} else { 

build.setMessage("This application requires Internet connection.Would you connect to   internet ?"); 
build.setPositiveButton("Yes", new OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 
     finish(); 
     startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); 

    } 
}); 
build.setNegativeButton("No", new OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 
     build.setMessage("Are sure you want to exit?"); 
     build.setPositiveButton("Yes", new OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
       finish(); 
      } 
     }); 
     build.setNegativeButton("NO", new OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
       finish(); 
       Intent intent = new Intent(SplashScreen.this, 
         SplashScreen.class); 
       startActivity(intent); 

       dialog.dismiss(); 

      } 
     }); 
     dailog = build.create(); 
     dailog.show(); 
    } 
}); 
dailog = build.create(); 
dailog.show(); 

} 

} 

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
// Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
return true; 
} 
} 
+1

загрузки LogCat пожалуйста –

ответ

0

Вот вспомогательный класс:

public class NetworkManager extends BroadcastReceiver { 

    // LOG 
    protected static final String TAG     = NetworkManager.class.getSimpleName(); 
    // DATA 
    protected Context    mContext; 
    protected boolean    mNoConnectivity; 
    protected String    mReason; 
    protected boolean    mIsFailover; 
    protected static boolean  mIsConnected  = false; 
    protected static boolean  mIsConnectivityGood = true; 

    public NetworkManager(Context context) { 
     this.mContext = context; 
    } 

    public void registerReceivers() { 
     mContext.registerReceiver(this, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
    } 

    public boolean isConnectingToInternet() { 
     ConnectivityManager connectivity = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
         return true; 
        } 
     } 
     return false; 
    } 

    public static NetworkInfo getNetworkInfo(Context context) { 
     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     return cm.getActiveNetworkInfo(); 
    } 

    public static boolean isConnected(Context context) { 
     NetworkInfo info = getNetworkInfo(context); 
     return (info != null && info.isConnected()); 
    } 

    public static boolean isConnectedWifi(Context context) { 
     NetworkInfo info = getNetworkInfo(context); 
     return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI); 
    } 

    public static boolean isConnectedMobile(Context context) { 
     NetworkInfo info = getNetworkInfo(context); 
     return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_MOBILE); 
    } 

    public static boolean isConnectedFast(Context context) { 
     NetworkInfo info = getNetworkInfo(context); 
     return (info != null && info.isConnected() && isConnectionFast(info.getType(), info.getSubtype())); 
    } 

    protected static boolean isConnectionFast(int type, int subType) { 
     if (type == ConnectivityManager.TYPE_WIFI) { 
      return true; 
     } 
     else if (type == ConnectivityManager.TYPE_MOBILE) { 
      switch (subType) { 
       case TelephonyManager.NETWORK_TYPE_1xRTT: 
        return false; // ~ 50-100 kbps 
       case TelephonyManager.NETWORK_TYPE_CDMA: 
        return false; // ~ 14-64 kbps 
       case TelephonyManager.NETWORK_TYPE_EDGE: 
        return false; // ~ 50-100 kbps 
       case TelephonyManager.NETWORK_TYPE_EVDO_0: 
        return true; // ~ 400-1000 kbps 
       case TelephonyManager.NETWORK_TYPE_EVDO_A: 
        return true; // ~ 600-1400 kbps 
       case TelephonyManager.NETWORK_TYPE_GPRS: 
        return false; // ~ 100 kbps 
       case TelephonyManager.NETWORK_TYPE_HSDPA: 
        return true; // ~ 2-14 Mbps 
       case TelephonyManager.NETWORK_TYPE_HSPA: 
        return true; // ~ 700-1700 kbps 
       case TelephonyManager.NETWORK_TYPE_HSUPA: 
        return true; // ~ 1-23 Mbps 
       case TelephonyManager.NETWORK_TYPE_UMTS: 
        return true; // ~ 400-7000 kbps 
       case TelephonyManager.NETWORK_TYPE_UNKNOWN: 
       default: 
        return false; 
      } 
     } 
     else { 
      return false; 
     } 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     mNoConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 
     mReason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON); 
     mIsFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false); 
     // 
     if (mNoConnectivity) { 
      mIsConnected = false; 
     } 
     else { 
      if (isConnectedFast(mContext)) { 
       mIsConnectivityGood = true; 
      } 
      else { 
       mIsConnectivityGood = false; 
      } 
      mIsConnected = true; 
     } 
    } 
} 

Вы можете использовать приемник вещания, чтобы получить событие в деятельности либо Жюст использовать статический метод для проверки возможности подключения ponctually.

+0

вы можете редактировать свою активность? – 01wifi01

+0

Удалите все, что связано с подключением в вашей деятельности, в вашем, если вы просто используете NetworkManager.isConnected (это), это все, что вам нужно. –

0

Используйте эту функцию, чтобы проверить, если устройство имеет доступ в Интернет ..

public static boolean hasInternet(Activity a) { 
    boolean hasConnectedWifi = false; 
    boolean hasConnectedMobile = false; 
    try { 

     ConnectivityManager cm = (ConnectivityManager) a.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo[] netInfo = cm.getAllNetworkInfo(); 
     for (NetworkInfo ni : netInfo) { 
      if (ni.getTypeName().equalsIgnoreCase("wifi")) 
       if (ni.isConnected()) 
        hasConnectedWifi = true; 
      if (ni.getTypeName().equalsIgnoreCase("mobile")) 
       if (ni.isConnected()) 
        hasConnectedMobile = true; 
     } 
     return hasConnectedWifi || hasConnectedMobile; 
    } 
    catch (Exception ex) { 
     CommonUtils.postException(ex, ex.getMessage()); 
    } 
    return false; 
} 
+0

У меня уже есть эта функция, пожалуйста, прочитайте описание, im получая 3 ошибки в моем коде – 01wifi01

+0

Что такое точное требование пользователя? если вы просто хотите проверить, есть ли у устройства интернет или нет, а затем приступить к запуску, почему это осложняется? if (internet), затем перейдите к следующему действию else finish –

+0

У меня есть два действия, SplashScreen.java - это моя активность в splashscreen, а MainActivity.java - это другое мое действие, поэтому, когда я открываю свое приложение, он должен отображать заставку в течение 3 секунд, и если интернет подключен, он должен просто взять меня в MainActivity.java, и если нет интернета, он должен показать диалог «для этого приложения требуется подключение к Интернету, включите ли вы свой интернет?» вместе с двумя кнопками «да» и «выход», если я нажму «да», он должен показать настройки беспроводной сети, и я должен иметь возможность включить Интернет, а когда я нажму кнопку «Назад», я должен быть отправлен в MainActivity. – 01wifi01

Смежные вопросы