5

ユーザーが Wi-Fi のあるゾーンに入ったときにアプリケーションを開くにはどうすればよいですか? これは可能ですか?私のアプリケーションが onPause() 状態であるとします(私のデバイスのホーム画面を意味します)。デバイスがwifiに接続されたとき。アプリケーションが自動的に開きます。

4

3 に答える 3

5

ブロードキャスト レシーバーを追加して、ネットワークの変更をリッスンしてみてください。Wi-Fi 接続時にアクティビティが開始されます。このソリューションのようなもの

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);
                }

    }
}

そしてマニフェストに追加

    <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"/>
于 2013-02-26T12:06:07.440 に答える
0

PlayストアのTaskerアプリで実行できるかもしれません(ただし無料ではありません). または、他の回答で概説されているコードを持つサービス(http://developer.android.com/guide/components/services.html)を作成し、Wi-Fiが利用可能なときにアプリ(アクティビティ)を起動できます。

于 2013-02-26T12:21:26.560 に答える
0

私が想像できるのは、次のonPause()ようなメソッドの上書きです。

@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(); 
    }
}

ただし、実際の onPause イベントを処理する方法も考え出す必要があります。

于 2013-02-26T12:12:10.337 に答える