WifiAwareManager возвращает ноль - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь создать приложение, которое использует Wifi Aware, но мой WifiAwareManager возвращает ноль.Как правильно инициализировать класс, чтобы он не возвращал ноль?В чем причина этого поведения?Я совершенно уверен, что Pixel 2 XL поддерживает Wifi Aware, я не прав?

final WifiAwareManager wifiAwareManager = (WifiAwareManager) getSystemService(Context.WIFI_AWARE_SERVICE);

if (wifiAwareManager.isAvailable()) {
    System.out.println("aware avaiable");
} else {
    System.out.println("aware not avaiable");
}

logcat:

2018-10-11 12:45:53.926 4003-4003/com.example.lucapalmieri.awarecheckE/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.lucapalmieri.awarecheck, PID: 4003
java.lang.IllegalStateException: Could not execute method for android:onClick
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389)
    at android.view.View.performClick(View.java:6294)
    at android.view.View$PerformClick.run(View.java:24770)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
    at android.view.View.performClick(View.java:6294) 
    at android.view.View$PerformClick.run(View.java:24770) 
    at android.os.Handler.handleCallback(Handler.java:790) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6494) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.net.wifi.aware.WifiAwareManager.isAvailable()' on a null object reference
    at com.example.lucapalmieri.awarecheck.MainActivity.check(MainActivity.java:71)
    at java.lang.reflect.Method.invoke(Native Method) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384) 
    at android.view.View.performClick(View.java:6294) 
    at android.view.View$PerformClick.run(View.java:24770) 
    at android.os.Handler.handleCallback(Handler.java:790) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6494) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

1 Ответ

0 голосов
/ 27 ноября 2018

Причина isAvailiable добавляется только с API-уровня 26 как WifiAwareManager.Я предполагаю, что вы используете Android с версией ниже, чем Android 8.0 https://developer.android.com/reference/android/net/wifi/aware/WifiAwareManager.html#isAvailable()

...