質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

2回答

3127閲覧

Android2.3.7でプッシュ通知したらエラーになる

退会済みユーザー

退会済みユーザー

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

3クリップ

投稿2014/07/23 07:08

Androidでプッシュ通知をやりたくてAndroid Developersのサイトを見ながら簡単なサンプルを作ってみたところ、手持ちのAndroidタブレット(4.0.3)とAndroidスマホ(4.3.x)では問題無くプッシュ通知できました。
しかし、古いスマホはどうだろうと手持ちのXperia(2.3.7)で試してみたところ、

「【アプリ名】(【パッケージ名】)が予期せず停止しました。やり直してください。」

というエラーメッセージが出てしまいます。
※エラーは出ますが、プッシュ通知そのものはきちんと出来ています。

2系のAndroidではプッシュ通知の実装で何か特別なコーディングが必要なのでしょうか?
同じような事象に遭われた方や何かご存知の方、アドバイス頂けましたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Androidの4.1とかからNotificationのUIが大幅に変わったことにより、いくつかの関数が変更になったりしているようですよー。

対処法としてはコードから端末のバージョンを取得して4.1以降とそれ以前で実行するものを分けてやることが最善だと思います。

投稿2014/07/23 07:51

HandStand_Cat

総合スコア88

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2014/07/23 08:05

コメントありがとうございます! 調べてみましたが、けっこう変わってしまってるんですね。。 アドバイス頂いた通り、バージョンで処理を振り分けたのですが、2系の方でまだエラーが出ちゃってます。。 今度は通知をタップしてもアプリが起動しなくなったので新しく追加したコードが間違っているようで… このサイトに書いている2.3用のコードを参考にしているんですが、どこかおかしいところがあるでしょうか…? http://androidindia.blogspot.jp/2012/05/statusbar-notification-for-android.html
HandStand_Cat

2014/07/23 08:10

一応確認ですがプロジェクトのバージョンは2系に対応していますか?
退会済みユーザー

退会済みユーザー

2014/07/23 08:21

minSdkVersion 9にしてあるので大丈夫かと。。 そしてすいません、通知をタップしたときにエラーになるのはIntentにセットする処理が足りていないのが原因でした。 今は修正して、 「2.x系のロジックは通って、プッシュ通知も表示されるけど、エラーダイアログが表示される。但し通知部分をタップするとアプリ起動」 という、当初の状態と変わらない状態になりました。
HandStand_Cat

2014/07/23 08:34

まだサイトのコードを確かめていないのですがエラーダイアログが表示されるタイミングでLogCatなどでなにかメッセージが吐き出されてたりしませんか?
退会済みユーザー

退会済みユーザー

2014/07/24 05:41

すいません、ご指摘の通りLogCatで確認したところ、あまり関係無いところ(貼り付けたコード以外の部分)のコードが原因でNullPointerExceptionが発生していたことが判明しました。。 おかげ様で無事解決できました! ありがとうございました。
HandStand_Cat

2014/07/24 05:51

載っている情報からはエラーの原因がわからなかったのでもしかしたら、と思いました。 無事、解決できてよかったです!
guest

0

APIレベル11以上はNotificationクラスのBuilderが使えますが
11未満は使えませんのでNotificationのコンストラクタで作成することになります。
あと、Builderのメソッドも16以上では非推奨なものがあるのでそこも振り分けが必要です。
動画確認してませんがこんな感じになると思います。

`
public static void setNotification(Context context, String title, String message, PendingIntent contentIntent){
Notification notification;
if(android.os.Build.VERSION.SDK_INT > 10){
Notification.Builder mBuilder = new Notification.Builder(context)
.setContentIntent(contentIntent).setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(title)
.setTicker(message)
.setContentText(message)
.setWhen(System.currentTimeMillis());
notification = android.os.Build.VERSION.SDK_INT > 15 ? mBuilder.build() : mBuilder.getNotification();
}else{
notification = new Notification(R.drawable.ic_launcher, message, System.currentTimeMillis());
notification.setLatestEventInfo(context, title, message, contentIntent);
}
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(R.string.app_id, notification);
}

`

投稿2014/08/13 06:19

soundsketcher

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問