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

롤리팝 업데이트 이후에 3g / lte 데이터에 접근을 못합니다. 방법 없나요?

0 추천

집에 형과 제가 둘다 지프로를 사용중입니다.

이번에 지프로가 롤리팝업데이트가 되서 업데이트를 했는데..
 
다 만족하지만 롤리팝 업데이트후 데이터 접근이 안되네요...
 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
메니페스트에서는 위처럼만 주고 사용했으며 
 
메인Activiti에서는
 
Class[] arrayOfClass = new Class[1];
arrayOfClass[0] = Boolean.TYPE;
Method localMethod = localClass.getMethod("setMobileDataEnabled", arrayOfClass);
ConnectivityManager localConnectivityManager = connectivityManager;
Object[] arrayOfObject = new Object[1];
arrayOfObject[0] = Boolean.valueOf(onoff);
 
이런식으로 소스를 사용중이었습니다.
 
하지만 롤리팝 업데이트로 같은 소스를 이용하여 사용했지만.. 
전혀 접근하지 못하네요..
 
아래와 같은 에러를 뿜어내는데.. 도데체 어디가 문제 인지 모르겠습니다.
롤리팝이후에 아예 막힌건지..
사용 방법이 틀려진건지.. 모르겠네요..
===================================================================================================
03-03 10:12:05.571: W/System.err(32374): java.lang.reflect.InvocationTargetException
03-03 10:12:05.571: W/System.err(32374):  at java.lang.reflect.Method.invoke(Native Method)
03-03 10:12:05.571: W/System.err(32374):  at java.lang.reflect.Method.invoke(Method.java:372)
03-03 10:12:05.571: W/System.err(32374):  at com.example.dataresetapp.MainActivity.DisconnectDATA(MainActivity.java:91)
03-03 10:12:05.571: W/System.err(32374):  at com.example.dataresetapp.MainActivity.access$0(MainActivity.java:79)
03-03 10:12:05.571: W/System.err(32374):  at com.example.dataresetapp.MainActivity$1.onClick(MainActivity.java:50)
03-03 10:12:05.571: W/System.err(32374):  at android.view.View.performClick(View.java:4764)
03-03 10:12:05.571: W/System.err(32374):  at android.view.View$PerformClick.run(View.java:19844)
03-03 10:12:05.571: W/System.err(32374):  at android.os.Handler.handleCallback(Handler.java:739)
03-03 10:12:05.571: W/System.err(32374):  at android.os.Handler.dispatchMessage(Handler.java:95)
03-03 10:12:05.571: W/System.err(32374):  at android.os.Looper.loop(Looper.java:135)
03-03 10:12:05.571: W/System.err(32374):  at android.app.ActivityThread.main(ActivityThread.java:5299)
03-03 10:12:05.571: W/System.err(32374):  at java.lang.reflect.Method.invoke(Native Method)
03-03 10:12:05.571: W/System.err(32374):  at java.lang.reflect.Method.invoke(Method.java:372)
03-03 10:12:05.571: W/System.err(32374):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
03-03 10:12:05.571: W/System.err(32374):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
03-03 10:12:05.571: W/System.err(32374): Caused by: java.lang.SecurityException: Neither user 10202 nor current process has android.permission.MODIFY_PHONE_STATE.
03-03 10:12:05.572: W/System.err(32374):  at android.os.Parcel.readException(Parcel.java:1540)
03-03 10:12:05.572: W/System.err(32374):  at android.os.Parcel.readException(Parcel.java:1493)
03-03 10:12:05.572: W/System.err(32374):  at com.android.internal.telephony.ITelephony$Stub$Proxy.setDataEnabled(ITelephony.java:3631)
03-03 10:12:05.572: W/System.err(32374):  at android.net.ConnectivityManager.setMobileDataEnabled(ConnectivityManager.java:3498)
==================================================================================================
원창현 (260 포인트) 님이 2015년 3월 3일 질문

2개의 답변

+1 추천

Neither user 10202 nor current process has android.permission.MODIFY_PHONE_STATE

MODIFY_PHONE_STATE 퍼미션이 없다네요

 

InvocationTargetException 도 발생했으니

리플렉션할 클래스 패키지 네임도 확인해보시구요

mamondebaltob (32,750 포인트) 님이 2015년 3월 3일 답변
android.permission.MODIFY_PHONE_STATE
기능은 2.3버전이후로인가 막혔다고 들었습니다.
그래서 그 기능을 사용하지 않고도
4.4 키켓까직은
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
이 2개로 데이트 on/off가 가능했는데.. 5.0이상부터는 안되는건가요?
+1 추천
로그를 보면 android.permission.MODIFY_PHONE_STATE 퍼미션이 없다고 되어있습니다.

해당 퍼미션은 시스템 앱만 사용할 수 있게 되어 있으니, 5.0부터는 일반 앱은 해당 기능을 사용할 수 없게 바뀌었나 봅니다.

 

해결책 :

1. 3G 상태를 직접 바꾸지 말고, 해당 기능을 하는 OS 설정 화면을 띄운다.

2. 또는 루팅 후 앱을 시스템 파티션에 설치한다. (android.permission.MODIFY_PHONE_STATE 퍼미션 추가 필요)
익명사용자 님이 2015년 3월 3일 답변
android.permission.MODIFY_PHONE_STATE 이 퍼미션은 2.3이후로 막혀있어서 사용이 불가능하네요.. 그리고 루팅은 하지 않고 사용하다보니 실제적으로 사용할 방법이 말씀하신것처럼 해당기능을 하는 OS설정 화면을 띄운다라고 하셨는데..
어떻게 띄우면 되는지 질문드려도 되게습니까?
...