마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

3G(Data) On/Off에 대한 질문입니다. 도와주세요.

0 추천

안녕하세요. 반갑습니다.

초보 안드로이드 개발자(?) 입니다. 

다름이 아니오라 제가 쓰고 싶어서 앱을 하나 만들고 있습니다. 본이 아니게 CDMA에서 해외향 스마트폰을 쓰다보니 제약사항이 많네요. CDMA2000 EVDO망에서는 데이터와 통화가 동시에 되는 반면, CDMA2000 1xRTT망에 붙어버리면 전화가 죽어버리는 상황이 발생해서 네트워크가 1xRTT로 변경되면 자동으로 데이터를 끄고 EVDO로 변경되면 다시 자동으로 데이터를 켜주는 앱을 하나 만들어 보려고 합니다. 

그래서 연습하다가, 우선 데이터 ON/OFF 제어부터 봐야 겠다 싶어 검색을 하면서 찾은 소스를 활용해서 우선 동작하는지 확인해 보고 있습니다.

아래 소스를 올려드립니다.

import java.lang.reflect.Method;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.RemoteException;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Menu;
import java.lang.reflect.*;
import android.app.*;
import android.content.*;
import android.os.*;
import android.telephony.*;
import android.util.Log;
import android.view.*;
import android.widget.*;
import com.android.internal.telephony.*;

public class MainActivity extends Activity {
 
 boolean isNetwork1xRTT = false;
 boolean isNetworkCDMA = false;
 boolean isNetworkEDGE = false;
 boolean isNetworkGPRS = false;
 boolean dataconnectivity;
  ITelephony telephonyService;
 
  @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
        
         Button btn1 = (Button)findViewById(R.id.button1);
         Button btn2 = (Button)findViewById(R.id.button2);
        
      try{
       TelephonyAidl();
      }catch(Exception e){}

  }       

     public void TelephonyAidl() throws Exception
     {
       TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
       @SuppressWarnings("rawtypes")
       Class c = Class.forName(tm.getClass().getName());
       Method m = c.getDeclaredMethod("getITelephony");
       m.setAccessible(true);
       telephonyService = (ITelephony)m.invoke(tm);
      
         Button btn1 = (Button)findViewById(R.id.button1);
         Button btn2 = (Button)findViewById(R.id.button2);
      
       btn1.setOnClickListener(new OnClickListener() {
          
           @Override
            public void onClick(View v)
            {
             telephonyService.enableDataConnectivity(); 
            }
           });
           
        btn2.setOnClickListener(new OnClickListener(){
           @Override
           public void onClick(View v)
           {
            telephonyService.disableDataConnectivity();
           }
           });
           }

}

 

==

이렇게 짰는데요. 우선 데이터 ON/OFF 여부를 확인하기 위해 버튼으로 켰다가 껐다 하게끔 만들어 보았습니다.

그런데 이클립스에서 보면 저 빨간색 코드 부분이 Unhandled exception type RemoteException 오류가 보여서

컴파일이 되지 않습니다.

 

제가 무얼 잘못한 것일까요?

도움을 부탁드립니다. 감사합니다.

 

* 또는 위에 설명된 제가 원하는 로직을 참조할 수 있는 소스가 있는 곳을 알려주시면 더욱 감사하겠습니다.

DS1NMA (130 포인트) 님이 2013년 8월 22일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...