안녕하세요. 반갑습니다.
초보 안드로이드 개발자(?) 입니다.
다름이 아니오라 제가 쓰고 싶어서 앱을 하나 만들고 있습니다. 본이 아니게 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 오류가 보여서
컴파일이 되지 않습니다.
제가 무얼 잘못한 것일까요?
도움을 부탁드립니다. 감사합니다.
* 또는 위에 설명된 제가 원하는 로직을 참조할 수 있는 소스가 있는 곳을 알려주시면 더욱 감사하겠습니다.