0
Я использую «Широковещательный приемник» в первый раз. Моя основная тема - читать уведомления из строки состояния и отображать ее в списке.java.lang.RuntimeException: Ошибка получения трансляции Намерение
Но когда я звоню Широковещательный приемник Я получаю следующее исключение, и приложение закрывается с крахом в результате.
07-13 14:19:49.081: E/AndroidRuntime(3985): FATAL EXCEPTION: main
07-13 14:19:49.081: E/AndroidRuntime(3985): Process: com.kc.mobile.notifications, PID: 3985
07-13 14:19:49.081: E/AndroidRuntime(3985): java.lang.RuntimeException: Error receiving broadcast Intent { act=NOTIFICATION_LISTENER flg=0x10 (has extras) } in c[email protected]41e9ef18
07-13 14:19:49.081: E/AndroidRuntime(3985): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:769)
и исходный код, как показано ниже ::
InformationList.java
package com.kc.mobile.notifications;
import java.util.ArrayList;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ListView;
import com.kc.mobile.notifications.adapter.NotificationAdapter;
import com.kc.mobile.notifications.util.NotificationModel;
public class InformationList extends Activity
{
Context mContext;
private NotificationReceiver nReceiver;
public static NotificationModel mNotification;
private ArrayList<NotificationModel> mNotifications = new ArrayList<NotificationModel>();
ListView mList;
private NotificationAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.informationlist);
mContext = getApplicationContext();
nReceiver = new NotificationReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("NOTIFICATION_LISTENER");
registerReceiver(nReceiver, filter);
Intent broadcastIntent = new Intent("NOTIFICATION_LISTENER_SERVICEE");
broadcastIntent.putExtra("command", "list");
sendBroadcast(broadcastIntent);
}
class NotificationReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
byte[] byteArray = intent.getByteArrayExtra("icon");
Bitmap bmp = null;
if (byteArray != null)
{
bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
}
String pack = intent.getStringExtra("package");
String time = intent.getStringExtra("time");
String title = intent.getStringExtra("title");
String desc = intent.getStringExtra("desc");
mNotification.setmBmp(bmp);
mNotification.setTitle(title);
mNotification.setDesc(desc);
mNotification.setmTime(time);
mNotification.setPack(pack);
if (mNotification != null)
{
mNotifications.add(mNotification);
mAdapter.notifyDataSetChanged();
}
else
{
mNotifications = new ArrayList<NotificationModel>();
mNotifications.add(mNotification);
mAdapter = new NotificationAdapter(getApplicationContext(), mNotifications);
mList = (ListView) findViewById(R.id.infolist);
mAdapter = new NotificationAdapter(mContext, mNotifications);
mList.setAdapter(mAdapter);
}
}
}
}
это push-уведомление? отправьте URL-адрес, а затем используйте url для загрузки изображения. – Raghunandan
Не нажимайте уведомление. Уведомление о статусной строке (все уведомления, такие как SMS, уведомление о новостях, предупреждение Whatsapp, уведомление FB .....) – KCRaju
вам также необходимо отменить регистрацию в ondestroy активности. Используйте отладчик и пошагово, чтобы посмотреть на причину и исправить – Raghunandan