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で通知が機能しない理由を誰かが教えてくれますか?