2015-02-19 3 views
-1

Я хочу проверить состояние данных на мобильных устройствах в android. Я написал следующий код в код кнопки щелкающий ..Произошла ошибка при проверке состояния мобильных данных

@SuppressWarnings("rawtypes") 
public void check_mobile_data(View view) { // this is my button clicking event. 
    Context context = null; 

    boolean mobileDataEnabled = false; // Assume disabled 
    @SuppressWarnings("null") 
    ConnectivityManager cm = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
    try { 

     Class cmClass = Class.forName(cm.getClass().getName()); 

     @SuppressWarnings("unchecked") 
     Method method = cmClass.getDeclaredMethod("getMobileDataEnabled"); 
     method.setAccessible(true); // Make the method callable 
     // get the setting for "mobile data" 
     mobileDataEnabled = (Boolean) method.invoke(cm); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     // Some problem accessible private API 
     // TODO do whatever error handling you want here 
    } 

    if (mobileDataEnabled == true) { 
     Toast.makeText(getApplicationContext(), "ON", Toast.LENGTH_LONG) 
       .show(); 
    } 
    if (mobileDataEnabled == false) { 
     Toast.makeText(getApplicationContext(), "OFF", Toast.LENGTH_LONG) 
       .show(); 
    } 
} 

В приведенной ниже ошибки показал на LogCat

02-19 11:08:29.338: E/AndroidRuntime(14900): FATAL EXCEPTION: main 
02-19 11:08:29.338: E/AndroidRuntime(14900): Process: com.example.checkmobiledata, PID: 14900 
02-19 11:08:29.338: E/AndroidRuntime(14900): java.lang.IllegalStateException: Could not execute method of the activity 
02-19 11:08:29.338: E/AndroidRuntime(14900): at android.view.View$1.onClick(View.java:4012) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at android.view.View.performClick(View.java:4761) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at android.view.View$PerformClick.run(View.java:19767) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at android.os.Handler.handleCallback(Handler.java:739) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at android.os.Handler.dispatchMessage(Handler.java:95) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at android.os.Looper.loop(Looper.java:135) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at android.app.ActivityThread.main(ActivityThread.java:5312) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at java.lang.reflect.Method.invoke(Native Method) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at java.lang.reflect.Method.invoke(Method.java:372) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 
02-19 11:08:29.338: E/AndroidRuntime(14900): Caused by: java.lang.reflect.InvocationTargetException 
02-19 11:08:29.338: E/AndroidRuntime(14900): at java.lang.reflect.Method.invoke(Native Method) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at java.lang.reflect.Method.invoke(Method.java:372) 
02-19 11:08:29.338: E/AndroidRuntime(14900): at android.view.View$1.onClick(View.java:4007) 
02-19 11:08:29.338: E/AndroidRuntime(14900): ... 10 more 
02-19 11:08:29.338: E/AndroidRuntime(14900): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference 
02-19 11:08:29.338: E/AndroidRuntime(14900): at com.example.checkmobiledata.MainActivity.check_mobile_data(MainActivity.java:28) 
02-19 11:08:29.338: E/AndroidRuntime(14900): ... 13 more 

Пожалуйста, дайте мне ответ на ваше самое лучшее.

+0

'Попытка вызвать виртуальный метод 'java.lang.Object android.content.Context.getSystemService (java.lang.String)' на нулевой объект reference', что это вам говорит? – immibis

+0

add android.permission.ACCESS_NETWORK_STATE разрешение –

ответ

2

NullPointerException: Попытка вызвать виртуальный метод ... Context.getSystemService ...

Поскольку context объект null. не инициализируется до использования context объект для доступа к методу getSystemService.

использование view.getContext() для получения контекста:

Context context = view.getContext(); 
+0

Дорогой ряσѕρєя K, я инициализирую контекстную переменную, но при нажатии кнопки она всегда показывает «ВЫКЛ», когда я переключаю мобильные данные для мобильной сети. – cheelstar

+0

@cheelstar: добавили ли вы ' android.permission.ACCESS_NETWORK_STATE' разрешение? –

+0

Дорогой ряσѕρєя K, Он работает, я забыл добавить разрешение. Спасибо и наилучшие пожелания – cheelstar

Смежные вопросы