2013-02-01 3 views
4

설명 할 수없는 문제가 있습니다. 나는 버튼이 포함 된 주요 활동이 있습니다. 이 버튼을 클릭하면 인터넷에서 XML 파일을 다운로드하는 새로운 활동이 시작됩니다. 다운로드하는 동안 다운로드 진행 상태를 나타내는 알림이 표시됩니다.NotificationManager가 장치에서만 충돌합니다.

내 AVD (API 레벨 17)에서 완벽하게 작동합니다. 그러나 내 장치 (API 레벨 10, 안드로이드 버전 2.3.3과 GT-I1900)에서 동일한 작업을 수행하려고하면 충돌이 발생합니다.

내가 사용하는 notificationBuilder에 문제가 있다고 생각합니다.

Context context = getApplicationContext(); 
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
notificationBuilder = new NotificationCompat.Builder(this); 
notificationBuilder.setContentTitle("Download Progress").setContentText("Downloading").setSmallIcon(android.R.drawable.stat_sys_download); 

... 내가 테스트하고 잘 작동 가지고 DownloadFilesTask (확장 AsyncTask를) 클래스를 사용하는 다운로드

notificationManager.notify(0, notificationBuilder.build()); 

. 여기

예외 로그입니다 :

at android.app.NotificationManager.notify(NotificationManager.java:91) 

그래서 내 질문은 : 문제가 내 장치의 API 레벨이 존재한다면, 사람이 낮은 API에 대한 통지 빌더를 사용하는 방법에 대해 설명 할 수 있습니다. 오래된 안드로이드 버전의

02-01 23:06:28.862: E/AndroidRuntime(16860): FATAL EXCEPTION: AsyncTask #1 
02-01 23:06:28.862: E/AndroidRuntime(16860): java.lang.RuntimeException: An error occured while executing doInBackground() 
02-01 23:06:28.862: E/AndroidRuntime(16860): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask.setException(FutureTask.java:125) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at java.lang.Thread.run(Thread.java:1019) 
02-01 23:06:28.862: E/AndroidRuntime(16860): Caused by: java.lang.IllegalArgumentException: contentIntent required: pkg=com.bakoproductions.easybet id=0 notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x0) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at android.os.Parcel.readException(Parcel.java:1326) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at android.os.Parcel.readException(Parcel.java:1276) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:322) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at android.app.NotificationManager.notify(NotificationManager.java:111) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at android.app.NotificationManager.notify(NotificationManager.java:91) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at com.bakoproductions.easybet.XMLParser.downloadXML(XMLParser.java:83) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at com.bakoproductions.easybet.DownloadFilesTask.doInBackground(DownloadFilesTask.java:24) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at com.bakoproductions.easybet.DownloadFilesTask.doInBackground(DownloadFilesTask.java:1) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
02-01 23:06:28.862: E/AndroidRuntime(16860): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
02-01 23:06:28.862: E/AndroidRuntime(16860): ... 4 more 
+0

전체 예외가 무엇입니까 전화

Intent intent = new Intent (this, MainActivity.class); intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); 

는 PendingIntent로 변환? – Codeman

+0

두 번째 질문은 기기의 Android 버전은 무엇인가요? –

답변

6

당신의 Notification가, 콘텐츠 의도를 가지고을 갖도록 사용자가 알림,이 발생 무언가를 클릭 할 때 :

여기에 전체 로그입니다. 즉, 다음을 수행해야합니다.

MainActivity과 같은 어딘가를 가리키는 Intent 개체를 만듭니다. Intent.FLAG_ACTIVITY_NEW_TASK 플래그를 반드시 추가하십시오.

PendingIntent pend = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

마지막으로, 빌더,

notificationBuilder.setContentIntent (pend); 
+0

네, 그게 !!!! 고마워요 !!! –

관련 문제