Как зарегистрировать Android Broadcast Reciever в моем приложении QT? - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу зарегистрировать broadcastReceiver в моем приложении.Я пишу программу для печати некоторой строки, когда Wi-Fi закрыт или сеть Wi-Fi перенесена в другую сеть.

Манифест:

<receiver android:name="org.qtproject.example.WifiReceiver" >
   <intent-filter android:priority="100">
      <action android:name="android.net.wifi.STATE_CHANGE" />
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
   </intent-filter>
</receiver>

Класс Java:

public class WifiReceiver extends BroadcastReceiver
{

String ssid;


@Override
  public void onReceive(Context context, Intent intent) {

       NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
     if(info != null && info.isConnected()) {

       System.out.println("ashoish");

       WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
       WifiInfo wifiInfo = wifiManager.getConnectionInfo();
       //ssid = wifiInfo.getSSID();

       ssid="ashish";//SOME STRING
       getinfo(ssid);

     }
}
public native  static String getinfo(String ssid);

}

заголовочный файл:

JNIEXPORT void JNICALL Java_org_qtproject_example_WifiReceiver_getinfo(JNIEnv * /*env*/,
                                          jobject /*this_obj*/, jstring ssid)
{

    qDebug()<<"ssid is"<<ssid;

}

Я ожидаю, когда я закрою свой Wi-Fi вручную или переключусь на другой Wi-Fi по крайней мере вручную, я получу некоторый результат из-за этой строки System.out.println("ashoish"); Но когда я пытаюсь это сделать, ashoish не печатается, что показывает, что onRecieve () не выполняется.

Есть ли у них проблемы с регистрацией BroadcastReciever в файле манифеста?Как я могу решить это?

1 Ответ

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

Эта проблема решается программной регистрацией BroadcastReciever ..

...