2013-02-26 11 views
5

Come posso aprire la mia applicazione quando un utente entra in una zona che ha il wi-fi? È possibile? Supponiamo che la mia applicazione sia in uno stato onPause() (significa homescreen di My Device). ora quando il dispositivo è connesso al wifi. aprirà automaticamente la mia applicazione.apri l'app quando ti connetti con wifi

risposta

5

Prova ad aggiungere il ricevitore broadcast e ascolta le modifiche alla rete, quando la connessione Wi-Fi avvia la tua attività. Qualcosa di simile a questa soluzione

public class ConnectivityReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

       ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
       NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
       NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
       if (((null != wifi)&&(wifi.isAvailable())) || ((null != mobile)&&(mobile.isAvailable()))){ 
        Intent uplIntent = new Intent(context, YourActivity.class); 
        uplIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(uplIntent); 
       } 

    } 
} 

E aggiungere a manifestare

<receiver android:name=".receiver.ConnectivityReceiver"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
    </receiver> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
+0

Ho ricevuto l'errore quando sono disabilitato il wifi . java.lang.RuntimeException: impossibile istanziare il destinatario com.example.text.ConnectivityReceiver: java.lang.ClassNotFoundException: com.example.text.ConnectivityReceiver nel caricatore dalvik.system.PathClassLoader [/data/app/com.example. test-2.apk] –

+0

> quando il mio stato di applicazione onPause() (indica la schermata iniziale di Device). quando il dispositivo si connette con il wifi, si aprirà automaticamente la mia applicazione. –

+0

@ prozhyga-> quando lo stato dell'applicazione myPause() (indica la schermata iniziale di Device). quando il dispositivo si connette con il wifi, si aprirà automaticamente la mia applicazione. –

0

Quello che posso immaginare è una sovrascrittura del onPause() metodo come questo:

@Override 
public void onPause() { 
    String conn_context = Context.WIFI_SERVICE; 
    final WifiManager wifi = (WifiManager) getSystemService(conn_context); 
    if (wifi.isWifiEnabled()) 
    { 
     super.onResume(); 
    } 
    else 
    { 
     super.onPause(); 
    } 
} 

ma si deve anche capire un modo per gestire l'evento onPause reale.

+0

@ goody-> quando la mia applicazione suPause() stato (indica la schermata iniziale di Device). quando il dispositivo si connette con il wifi, si aprirà automaticamente la mia applicazione. –