GCM无法启动服务意图。

5

从Android P开始,我的应用无法注册GCM ID。我的PushManager代码如下:

try
        {
            GcmClient.CheckDevice(context);
            GcmClient.CheckManifest(context);
            String[] senderIds = GcmBroadcastReceiver.SENDER_IDS;
            foreach (String id in senderIds)
            {
                System.Diagnostics.Debug.WriteLine("sender id = " + id);
            }

            GcmClient.Register(context, senderIds);

            if (GcmClient.IsRegistered(context))
            {
                System.Diagnostics.Debug.WriteLine("push registration successfull: " +
                                                   GcmClient.GetRegistrationId(context));
            }
        }
        catch (Exception e)
        {
            System.Diagnostics.Debug.WriteLine("push registration failed: " + e.Message.ToString());
        }

我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.app" android:versionName="1.8.5" android:versionCode="97">
    <uses-sdk android:minSdkVersion="16" />
    <application android:label="My app" android:icon="@mipmap/icon" android:theme="@style/Theme.App" android:hardwareAccelerated="true" android:windowSoftInputMode="stateHidden|adjustResize" android:name="android.support.multidex.MultiDexApplication">
        <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent" />
    </application>
    <permission android:name="com.rotogrinders.rg_lineups.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="com.rotogrinders.rg_lineups.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <permission android:name="android.permission.STATUS_BAR_SERVICE" android:protectionLevel="signature" />
<!-- For Google Play Services -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <action android:name="com.google.android.c2dm.intent.REGISTER" />
    <service android:name="com.google.android.gms.analytics.AnalyticsService" android:enabled="true" android:exported="false" />

每当我尝试注册或注销时,都会收到以下错误提示:
07-05 16:35:49.156 W/ActivityManager( 1167): Unable to start service Intent { act=com.google.android.c2dm.intent.UNREGISTER pkg=com.google.android.gsf (has extras) } U=0: not found
07-05 16:35:49.169 W/ActivityManager( 1167): Unable to start service Intent { act=com.google.android.c2dm.intent.REGISTER pkg=com.google.android.gsf (has extras) } U=0: not found

我发现运行较旧操作系统的设备都可以正常注册。到目前为止,我唯一遇到的问题是与Android P预览版有关。如有任何帮助,将不胜感激。


为什么你在使用GCM?它很快就会被取代,我建议你改用FCM。 - FreakyAli
1
切换到 FCM 是我的待办事项。我在考虑是否应该忽略这个问题,希望 FCM 能够解决它。 - Dan Schneider
前几天在处理 FCM,它在 Android P 上运行得非常好。在这里查看如何操作:https://stackoverflow.com/a/48089829/7462031 - FreakyAli
1个回答

1

您可能正在使用较旧版本的GCM。

您可以升级到GCM 11或更高版本,甚至更好地迁移到FCM。(GCM现已弃用)

(最新的GCM版本是15.0.1:com.google.android.gms:play-services-gcm:15.0.1)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接