2

Android 6でWIFIとモバイルデータの両方がオンになっている場合でも、Androidアプリケーションでモバイルデータのみを使用する必要があります。Android プロセスをモバイル データのみにバインドするにはどうすればよいですか。 提案してください。例は良いでしょう。

4

3 に答える 3

5

Android のバージョンが M 以上の場合、これは非常に簡単に行うことができます。まず、適切なマニフェスト権限が必要です: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

必要なことを行うメソッドの例を次に示します。

public static void forceConnectionToMobile2(Context context) {
    final ConnectivityManager connection_manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        NetworkRequest.Builder request = new NetworkRequest.Builder();

        Log.d(TAG,"request TRANSPORT_CELLULAR");
        request.addCapability(NetworkCapabilities.TRANSPORT_CELLULAR);

        connection_manager.requestNetwork(request.build(), new ConnectivityManager.NetworkCallback() {
            @Override
            public void onAvailable(Network network) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    Log.d(TAG,"binding app to cellular network");
                    connection_manager.bindProcessToNetwork(network);
                }
            }
        });

    }
}
于 2016-10-24T19:10:32.773 に答える
0

Android force アプリにアクセスして、モバイル データ チャネルを使用できます

    manager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);

if(manager.isWifiEnabled()) {
    manager.setWifiEnabled(false);
}
// and to be sure:
ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);
于 2016-10-24T10:58:51.540 に答える