2

나는 라우터 이런 식으로 도달하고자 :안드로이드 6 및 안드로이드 7에서 프로그래밍 방식으로 LTE 데이터 연결을 해제하는 방법은 무엇입니까?

isReachable = InetAddress.getByName("192.168.1.1").isReachable(2000);

하지만 false를 반환합니다.

흥미롭게도 LTE 데이터를 수동으로 끄면 작동합니다.

내가 프로그래밍/오프 LTE 데이터를 켜이 코드를 발견하지만

private void setMobileDataEnabled(Context context, boolean enabled) 
{ 
    final ConnectivityManager conman = (ConnectivityManager)  
    final ConnectivityManager conman = (ConnectivityManager) 
    context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    final Class conmanClass = Class.forName(conman.getClass().getName()); 
    final Field iConnectivityManagerField = 
    conmanClass.getDeclaredField("mService"); 
    iConnectivityManagerField.setAccessible(true); 
    final Class iConnectivityManagerClass = 
    Class.forName(iConnectivityManager.getClass().getName()); 
    final Method setMobileDataEnabledMethod = 
    iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", 
    Boolean.TYPE); 
    setMobileDataEnabledMethod.setAccessible(true); 
    setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled); 
} 

당신이 온/오프 LTE 데이터를 켜 할 수있는 다른 방법을 찾는 데 도움이 될 수 6 안드로이드 또는 7에서 작동하지 않습니다 안드로이드 6 또는 7?

답변

1

문제점을 해결하는 방법을 찾았습니다. 프로그래밍 방식으로 셀룰러 데이터를 끄는 데 실패하지만, 앱이 Wi-Fi 연결 만 사용하도록하는 방법을 찾은 경우 다음 코드입니다.

final ConnectivityManager connectivityManager = 
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 

NetworkRequest.Builder request = null; 
    if (android.os.Build.VERSION.SDK_INT >=           
android.os.Build.VERSION_CODES.LOLLIPOP) { 
     request = new NetworkRequest.Builder(); 

     request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); 

     connectivityManager.registerNetworkCallback(request.build(), new ConnectivityManager.NetworkCallback() { 

     @Override 
     public void onAvailable(Network network) { 
      //if (SDK_INT >= LOLLIPOP && SDK_INT <= M) { 

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
       ConnectivityManager.setProcessDefaultNetwork(network); 
      } 

      } 
    }); 
    }