接收广播意图时出错。 Eclipse 帕霍
Error Recieving Broadcast intent. Eclipse Paho
我正在尝试将 eclipse paho 库用于为我的 IoT 项目设计的 android 应用程序。 Android 应用程序只是将陀螺仪和加速度计数据发送到 iot.eclipse.org 的代理。
我使用以下代码与 MQTT 服务器建立连接。
`public void establishMQTTConnection(){
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)
Android清单....
`
<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>
`
谁能帮我找出代码中的问题。十分感谢!!!!
异常的关键部分在中间:
Caused by: java.lang.SecurityException: Neither user 10121 nor current process has android.permission.WAKE_LOCK.
确保您已将所需部分添加到应用程序清单
<uses-permission android:name="android.permission.WAKE_LOCK" />
在我的例子中,我忘记在清单中添加以下 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" />
我正在尝试将 eclipse paho 库用于为我的 IoT 项目设计的 android 应用程序。 Android 应用程序只是将陀螺仪和加速度计数据发送到 iot.eclipse.org 的代理。 我使用以下代码与 MQTT 服务器建立连接。 `public void establishMQTTConnection(){
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)
Android清单....
`
<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>
`
谁能帮我找出代码中的问题。十分感谢!!!!
异常的关键部分在中间:
Caused by: java.lang.SecurityException: Neither user 10121 nor current process has android.permission.WAKE_LOCK.
确保您已将所需部分添加到应用程序清单
<uses-permission android:name="android.permission.WAKE_LOCK" />
在我的例子中,我忘记在清单中添加以下 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" />