【发布时间】:2016-05-29 08:40:03
【问题描述】:
我正在开发一个 android 附近的应用程序,我正在尝试通过 Google 的附近消息 API 订阅()附近的消息,我设法连接到 googleApiClient,但是在订阅时,我收到了一个 TOO_MANY_PENDING_INTENT 错误。
这是我的代码:
private void subscribe() {
if (mSubscribed) {
Log.i(TAG, "Already subscribed.");
return;
}
SubscribeOptions options = new SubscribeOptions.Builder()
.setStrategy(Strategy.BLE_ONLY)
.build();
Nearby.Messages.subscribe(mGoogleApiClient, getPendingIntent(), options)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.isSuccess()) {
Log.i(TAG, "Subscribed successfully.");
startService(getBackgroundSubscribeServiceIntent());
} else {
Log.e(TAG, "Operation failed. Error: " +
NearbyMessagesStatusCodes.getStatusCodeString(
status.getStatusCode()));
}
}
});
}
还有我的清单:
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- This is required for the scan library. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.google.android.nearby.messages.API_KEY"
android:value="AIzaSyB6hlT5939qLK2HORZoeiHx2vytqKrtFHA" />
<activity android:name=".uid.Main2Activity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<service
android:name="org.physical_web.uid.BackgroundSubscribeIntentService"
android:exported="false" />
...
请问有人知道这个问题吗? 谢谢你:)
【问题讨论】:
-
代码是否曾经将
mSubscribed设置为true?如果不是,则每次调用所示的subscribe()方法时都会调用getPendingIntent()。 -
是的,在我的 onCreate() 方法中: if (savedInstanceState != null) mSubscribed = savedInstanceState.getBoolean(KEY_SUBSCRIBED, false);我只是从谷歌开发者网站复制粘贴代码。
-
getPendingIntent() 的代码是什么样的?确保始终使用相同的意图(包括相同的请求代码,但附加内容可能不同)。重新启动也应该清除所有内容,尝试一下,看看你是否再次收到错误。
标签: android bluetooth-lowenergy uid eddystone google-nearby