gpt4 book ai didi

android - onHandleIntent 没有被调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:52 28 4
gpt4 key购买 nike

我正在尝试使用 , 为 android 实现 GCM, https://developers.google.com/cloud-messaging/android/client ..

Created configuration file and placed under project/src..Added all the permissions in manifest file..
still onHandleIntent() method is not getting called, and token is not generated..

My intentservice file:

public class RegistrationIntentService extends IntentService {

private static final String TAG = "RegIntentService";
private static final String[] TOPICS = {"global"};

public RegistrationIntentService() {
super(TAG);
}

@Override
public void onDestroy() {
Log.d(TAG, "onDestroy()");
super.onDestroy();
}

@Override
protected void onHandleIntent(Intent intent) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

try {
// In the (unlikely) event that multiple refresh operations occur simultaneously,
// ensure that they are processed sequentially.
synchronized (TAG) {
// [START register_for_gcm]
InstanceID instance = InstanceID.getInstance(this);
String token = instance.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
System.out.println("GCM Token is :" + token);
// [END get_token]
//Log.i(TAG, "GCM Regist Token: " + token);

// TODO: Implement this method to send any registration to your app's servers.
sendRegistrationToServer(token);

// Subscribe to topic channels
subscribeTopics(token);

// You should store a boolean that indicates whether the generated token has been
// sent to your server. If the boolean is false, send the token to your server,
// otherwise your server should have already received the token.
sharedPreferences.edit().putBoolean(AppConstants.SENT_TOKEN_TO_SERVER, true).apply();
// [END register_for_gcm]
}
} catch (Exception e) {
// Log.d(TAG, "Failed to complete token refresh", e);
// If an exception happens while fetching the new token or updating our registration data
// on a third-party server, this ensures that we'll attempt the update at a later time.
sharedPreferences.edit().putBoolean(AppConstants.SENT_TOKEN_TO_SERVER, false).apply();
}
// Notify UI that registration has completed, so the progress indicator can be hidden.
Intent registrationComplete = new Intent(AppConstants.REGISTRATION_COMPLETE);
LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
}

And my manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xyz"
android:versionCode="1"
android:versionName="1.0" >


<!-- Permissions needed for read contacts -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<!-- Permissions needed for read calendars -->
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />


<application
android:allowBackup="true"
android:name=".application.Application"
android:icon="@drawable/ic_launcher"
android:theme="@style/Theme"
android:label="lez">


</receiver>
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />

</intent-filter>
</receiver>
<service
android:name=".gcm.MyGcmListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".gcm.MyInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
<service
android:name=".gcm.RegistrationIntentService"
android:exported="false">
</service>

<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />

<uses-library android:name="android.test.runner" />
</application>`enter code here`

</manifest>

请问有人能帮帮我吗?我能够运行上面链接中给出的示例,示例和我的代码之间的唯一区别是我没有应用程序级别的 gradle...只有一个 gradle 文件..在 gradle 中我刚刚添加了 google-app-gcm dependency...它是从eclipse导入到android studio的项目

最佳答案

看起来这已经很老了,但我想我会添加答案,因为我刚遇到这个问题。您只需在 AndroidManifest.xml 文件中添加服务声明。将以下节点添加到“应用程序”节点。

<service
android:name=".RegistrationIntentService"
android:exported="false"/>

这也是类似的回答和讨论here .

关于android - onHandleIntent 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31336803/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com