我正在使用AsyncTask
从服务器下载Android中的文件。我希望将进度对话框显示为通知栏(当您从AndroidMarket下载应用程序时)。
我正在做以下事情:
修改
@Override
protected void onProgressUpdate(Integer... progress) {
super.onProgressUpdate(progress);
// show a notification bar.
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(android.R.drawable.btn_star, "test",System.currentTimeMillis());
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.flags |= Notification.FLAG_NO_CLEAR;
Intent notificationIntent = new Intent(AsynctaskActivity.this, AsynctaskActivity.class);
notificationIntent.addFlags(Notification.FLAG_ONGOING_EVENT);
PendingIntent contentIntent = PendingIntent.getActivity(AsynctaskActivity.this, 0, notificationIntent, 0);
notification.setLatestEventInfo(AsynctaskActivity.this, "test","test", contentIntent);
notification.number += 1;
notification.contentView.setProgressBar(progress[0], 100, 42, false);
notificationManager.notify(1, notification);}
但我收到错误:
07-13 10:37:16.039: E/AndroidRuntime(27190): FATAL EXCEPTION: main
07-13 10:37:16.039: E/AndroidRuntime(27190): android.app.RemoteServiceException: Bad notification posted from package s.s: Couldn't expand RemoteViews for: StatusBarNotification(package=s.s id=1 tag=null notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x30))
07-13 10:37:16.039: E/AndroidRuntime(27190): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1056)
07-13 10:37:16.039: E/AndroidRuntime(27190): at android.os.Handler.dispatchMessage(Handler.java:99)
07-13 10:37:16.039: E/AndroidRuntime(27190): at android.os.Looper.loop(Looper.java:130)
07-13 10:37:16.039: E/AndroidRuntime(27190): at android.app.ActivityThread.main(ActivityThread.java:3701)
07-13 10:37:16.039: E/AndroidRuntime(27190): at java.lang.reflect.Method.invokeNative(Native Method)
07-13 10:37:16.039: E/AndroidRuntime(27190): at java.lang.reflect.Method.invoke(Method.java:507)
07-13 10:37:16.039: E/AndroidRuntime(27190): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
07-13 10:37:16.039: E/AndroidRuntime(27190): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
07-13 10:37:16.039: E/AndroidRuntime(27190): at dalvik.system.NativeStart.main(Native Method)
我做错了什么?
答案 0 :(得分:0)
你的做法是错误的。
在这一行
PendingIntent act = PendingIntent.getActivity(MY_ACTIVITY, 0, new Intent(), 0);
您正在通过new Intent();
您应该执行以下操作,创建一个Intent,并设置您希望在通知中显示的内容:
Intent notificationIntent = new Intent(this, PlayTrack.class);
notificationIntent.addFlags(Notification.FLAG_ONGOING_EVENT);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
答案 1 :(得分:0)
你的错误之一就在线下
Notification notification = new Notification(android.R.drawable.btn_star, "test",System.currentTimeMillis());
将其更改为
Notification notification = new Notification(R.drawable.btn_star, "test",System.currentTimeMillis());