【问题标题】:Get Android device token获取 Android 设备令牌
【发布时间】:2015-04-03 13:44:57
【问题描述】:

我正在为我需要 deviceToken 的推送通知集成 Pushwoosh API。我如何获得它:

我用这个得到空字符串:

String deviceToken=GCMRegistrar.getRegistrationId(getApplicationContext()); 

这些是我在 AndroidMainfest.xml 中拥有的权限:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<permission android:name="com.example.gcm.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />

<application ...>
    <receiver
        android:name=".GcmBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.example.gcm" />
        </intent-filter>
    </receiver>
    <service android:name=".GcmIntentService" />
</application>

这是获取deviceToken的正确方法吗?

【问题讨论】:

  • 您能否确认一下,您已在清单中授予互联网权限,或者您的设备是否可以访问互联网
  • @AndroidWeblineindia :是的,我有。
  • 如果可能的话,您能否提供代码以便更好地了解您的问题所在
  • @AndroidWeblineindia :这是我用于获取 deviceToken 的单行代码。没有其他的。 Mainfest 前提与 Ashish 在他的回答中提到的相同。

标签: android pushwoosh devicetoken android-devicetoken


【解决方案1】:

您的代码看起来不错,只需将您的 AndroidManifest 与以下代码进行比较,以确保您没有遗漏任何内容 -

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<permission android:name="com.example.gcm.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />

<application ...>
    <receiver
        android:name=".GcmBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.example.gcm" />
        </intent-filter>
    </receiver>
    <service android:name=".GcmIntentService" />
</application>

希望这会有所帮助:)

【讨论】:

  • 我在应用程序的任何地方都没有 GcmIntentService。我正在使用默认的 GcmBroadcastReceiver。有那件事吗?
【解决方案2】:

试试下面的代码,希望对你有帮助

    GCMRegistrar.checkDevice(getApplicationContext());
    GCMRegistrar.checkManifest(getApplicationContext());    

    final String regId = GCMRegistrar.getRegistrationId(this);

【讨论】:

    猜你喜欢
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2012-10-02
    • 1970-01-01
    • 2014-07-31
    相关资源
    最近更新 更多