2013-05-14 3 views
1

저는 Android 개발자입니다. 내 응용 프로그램의 버튼을 통해 3G connection을 켜거나 끕니다.Android에서 3G를 켜고 끄는 방법

+0

해당 스레드는 최신 답변을 제공하지 않습니다. 주어진 솔루션은 2.2 이후에 작동을 멈추거나 루트 액세스가 필요합니다. – ohaleck

+0

아래에 답변으로 가능한 회피 방법에 대한 설명이 추가되었습니다. 그것은 내 애플 리케이션 중 하나에서 잘 작동합니다. – ohaleck

답변

1

최근에이 주제에 대한 광범위한 검색을 수행했으며, 귀하가 앱을 루트로 실행하지 않는 이상 현대 안드로이드 버전에서는이 문제에 대한 간단한 해결책이 없다고 말해야합니다.

간단하지만 제한된 해결 방법을 찾았습니다. Wi-Fi가 다운 된 경우에만 3G 연결이 활성화되므로 네트워크 연결을 초기화 할 때마다 WiFi가 연결되어 있고 연결되어 있는지 확인해야합니다. 당신이 ACCESS_NETWORK_STATE 권한이 필요

AndroidManifest를에서
public class MyActivity extends Activity { 
    boolean enable3g = false; 

    public void onCreate() { 
     setContentView(R.layout.my_layout); 
     Button enable3gButton = (Button) findViewById(R.id.button3g); 
     enable3gButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       MyActivity.this.enable3g = !MyActivity.this.enable3g; 
      } 
     }); 

     if (enable3g || isWifiConnected()) { 
      // do your stuff that requires network access here 
     } 



    } 
    public boolean isWifiConnected() { 
     ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     return connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected(); 
    } 
} 

(물론 활동의 선언) :

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<application .....> 
    <activity android:name="MyActivity" /> 

와이파이가 연결되지 않은 경우합니다 (isWifiConnected() 메소드가 반환 아래 샘플 활동에 대한 몇 가지 코드입니다 false) 연결을 시작하지 마십시오. 기존의 TCP 연결은 한 네트워크에서 다른 네트워크로 "점프"할 수 없으므로 Wi-Fi 연결이 끊어지면 시간이 초과되어 솔루션이 상당히 안전합니다.

제한 사항은 응용 프로그램의 연결을 제어 할 수 있어야한다는 것입니다. WebView 또는 일부 타사 소프트웨어를 사용하는 경우 까다로울 수 있습니다.

+0

내 objectif는 버튼을 만드는 것입니다, 그리고 사용자가 그것으로부터 인터넷을 켤 수 있습니다! 나는 해결책을 찾지 못했습니다. – user2207848

+0

예제 활동을 포함하도록 예제를 확장했습니다. 이것은 레이아웃 파일'my_layout.xml'에 버튼을 정의한 것으로 가정하고 버튼의 id는'button3g'입니다. 네트워크를 필요로하는 모든 코드를'if' 블럭으로 감싸고,'enable3g'가'true'로 설정되어 있는지, 아니면 버튼을 이용하여 이루어 졌는지 확인해야합니다. – ohaleck

+0

매니페스트에 몇 가지를 추가해야하나요? – user2207848

관련 문제