【问题标题】:Error Recieving Broadcast intent. Eclipse Paho接收广播意图时出错。日食帕霍
【发布时间】:2016-05-24 07:22:27
【问题描述】:

我正在尝试将 eclipse paho 库用于为我的 IoT 项目设计的 android 应用程序。 Android 应用程序只是将陀螺仪和加速度计数据发送到 iot.eclipse.org 上的代理。 我使用以下代码与 MQTT 服务器建立连接。 `公共无效建立MQTTConnection(){

    clientId = MqttClient.generateClientId();
    Log.d(TAG,clientId+"");
    client =
            new MqttAndroidClient(this.getApplicationContext(),  "iot.eclipse.org:1883",
                    clientId);

   // MqttConnectOptions options = new MqttConnectOptions();
    //options.setUserName("aiupvrxz");
    //options.setPassword("dOW0vFQzRGKA".toCharArray());
    try {

        token = client.connect();
        token.setActionCallback(new IMqttActionListener() {
            @Override
            public void onSuccess(IMqttToken asyncActionToken) {
                // We are connected
                Log.d(TAG, "onSuccess");
            }

            @Override
            public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                // Something went wrong e.g. connection timeout or firewall problems
                Log.d(TAG, "onFailure");

            }
        });
    } catch (MqttException e) {
        e.printStackTrace();
    }
}` 

问题是应用永远不会建立连接。 我在 logcat 中收到以下错误。

05-24 12:48:20.772 10236-10236/iot.dulanga.com.androidclientv2 E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x10000010 (has extras) } in org.eclipse.paho.android.service.MqttService$NetworkConnectionIntentReceiver@41fc9348
   at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:737)
   at android.os.Handler.handleCallback(Handler.java:605)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:4573)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:511)
android.permission.WAKE_LOCK
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
   at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.SecurityException: Neither user 10121 nor current process has android.permission.WAKE_LOCK.
   at android.os.Parcel.readException(Parcel.java:1327)
   at android.os.Parcel.readException(Parcel.java:1281)
   at android.os.IPowerManager$Stub$Proxy.acquireWakeLock(IPowerManager.java:432)
   at android.os.PowerManager$WakeLock.acquireLocked(PowerManager.java:295)
   at android.os.PowerManager$WakeLock.acquire(PowerManager.java:264)
   at org.eclipse.paho.android.service.MqttService$NetworkConnectionIntentReceiver.onReceive(MqttService.java:794)
   at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728)
   at android.os.Handler.handleCallback(Handler.java:605) 
   at android.os.Handler.dispatchMessage(Handler.java:92) 
   at android.os.Looper.loop(Looper.java:137) 
   at android.app.ActivityThread.main(ActivityThread.java:4573) 
   at java.lang.reflect.Method.invokeNative(Native Method) 
   at java.lang.reflect.Method.invoke(Method.java:511) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
   at dalvik.system.NativeStart.main(Native Method)

AndroidManifest....

`

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <service android:name="org.eclipse.paho.android.service.MqttService" >
    </service>
</application>

`

谁能帮我找出我的代码的问题。十分感谢!!!!

【问题讨论】:

    标签: android android-studio mqtt iot paho


    【解决方案1】:

    异常在中间有关键部分:

    Caused by: java.lang.SecurityException: Neither user 10121 nor current process has android.permission.WAKE_LOCK.
    

    确保您已将所需部分添加到应用程序清单中

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    

    【讨论】:

    • 先生,非常感谢您的回答。我已经在清单中添加了该权限。我仍然得到同样的错误。
    • 如果你在正确的地方添加了它,那么异常应该已经改变了
    • 不,先生,我仍然遇到同样的异常。我已经编辑了这个问题。我也包括了清单。如果您能帮助我解决这个问题,我们将不胜感激。非常感谢
    • 有人解决了这个问题吗?仅在 Android 8 上就发生在我身上
    【解决方案2】:

    在我的情况下,我忘记在清单中添加以下 2 行:

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    

    当然你也需要添加这些权限:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    

    并在应用程序范围内添加此行:

    <service android:name="org.eclipse.paho.android.service.MqttService" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多