5
public static final String NOTIFICATION_TITLE = "Title";
public static final int NOTIFICATION_ID = 1;
private NotificationManager mNotificationManager;
NotificationCompat.Builder builder;

private void sendNotification(String msg) {
    mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0);

    NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(NOTIFICATION_TITLE)
            .setStyle(new NotificationCompat.BigTextStyle()
                .bigText(msg))
            .setAutoCancel(true)
            .setContentIntent(contentIntent)
            .setContentText(msg);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}

上記のコードは、Nexus 4 (Android 4.3) では問題なく動作しますが、古い Nexus One (Android 2.3.7) ではまだ通知が表示されません。

マニフェスト ファイル

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET" />

<!-- GCM -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="my.package.matchtracker.permission.C2D_MESSAGE" />
<uses-permission android:name="my.package.permission.C2D_MESSAGE" />
<permission
    android:name="my.package.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<application
    android:name=".AppClass"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <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="my.package" />
        </intent-filter>
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="my.package" />
        </intent-filter>
    </receiver>
    <service android:name=".GcmIntentService" />

    <activity
        android:name="my.package.MainActivity"
        android:screenOrientation="portrait"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

私のシナリオ

  • Ubuntu の下の Android Studio 0.2.8
  • Android SDK ツール 22.2.1
  • Android SDK プラットフォーム ツール 18.0.1
  • Android SDK ビルド ツール 17
  • Android サポート リポジトリ 2
  • Android サポート ライブラリ 18
  • グーグルプレイサービス 12

build-gradleのプロジェクトの私のファイル

dependencies {
    compile 'com.android.support:support-v4:18.0.+', 'com.google.android.gms:play-services:3.1.+'
}

今まで何してたんだ

  • ジンジャーブレッドが必要PendingIntentであることを認識しているため.setContentIntent、設定されています
  • また、呼び出される関数を作成しようとしましたif(Build.VERSION.SDK_INT < 11)
  • 古い(しかし廃止された)Notificationものでも機能しません
  • 4.3 デバイスは通知を完全に受信するため、サーバーは期待どおりに動作します。

だから、今私は新しいアイデアを使い果たしました.API 10で通知が機能しない理由を誰かが教えてくれますか?

4

1 に答える 1

1

私はあなたと同じ問題を抱えています。明らかに、ジンジャーブレッドバージョンのみに影響することに気付きました

これは私のために働いた修正です Android : 2.3.6 (Samsung galaxy y) で通知が機能しない

于 2014-02-18T15:19:58.210 に答える