我希望这样做,当有人插入耳机时,在手机上做任何事情时,不只是在应用程序上开始,通知区域中出现通知图标(非常顶部)我已经有通知图标代码< / p>
//Notification Icon Starts
NotificationManager nm=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification=new Notification(R.drawable.icon_notification, "Icon Notification", System.currentTimeMillis());
Context context=MainActivity.this;
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), Notification.FLAG_ONGOING_EVENT);
notification.flags = Notification.FLAG_ONGOING_EVENT;
notification.setLatestEventInfo(this, "Notification Icon", "Touch for more options", contentIntent);
Intent intent=new Intent(context,MainActivity.class);
PendingIntent pending=PendingIntent.getActivity(context, 0, intent, 0);
nm.notify(0, notification);
//Notification Icon Ends
现在我只是需要它,所以当你插入显示的耳机时。所以我用这个做了一个新类,它检测它是否插入然后记录它。这一切都有效
public class MusicIntentReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
int state = intent.getIntExtra("state", -1);
switch (state) {
case 0:
Log.d("unplugged", "Headset was unplugged");
break;
case 1:
Log.d("plugged", "Headset is plugged");
break;
default:
Log.d("uh", "I have no idea what the headset state is");
}
}
}
所以我尝试将Notification Icon代码放在案例1中,这样当它检测到它被插入时,就会运行它。但它没有,相反,我得到了很多错误。这是一个截图http://prntscr.com/1xblhb我想不出任何其他方法来解决这个问题,我已经坚持这么久了。所以,如果你能帮助我并尝试用初学者的话说出来,那对我来说意味着世界。非常感谢你。
答案 0 :(得分:0)
你没有在大多数地方设置正确的上下文。上下文不是MainActivity.this
你甚至没有你的主要活动范围。您的onReceive
中有一个上下文变量,只需使用它。
从您需要使用的非活动/服务中获取system service
context.getSystemService()
当你已经创建一个变量时,你也试图创建一个名为intent
的变量,因此你需要另一个名字。
总结一下,看看错误说的是什么并做出改变
答案 1 :(得分:0)
最终找到答案
我在所有方法之外声明了这个
int YOURAPP_NOTIFICATION_ID = 1234567890;
NotificationManager mNotificationManager;
然后在onReceive方法中我调用了以下内容:
mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
showNotification(context, R.drawable.icon, "short", false);
然后宣布以下方法:
private void showNotification(Context context, int statusBarIconID, String string, boolean showIconOnly) {
// This is who should be launched if the user selects our notification.
Intent contentIntent = new Intent();
// choose the ticker text
String tickerText = "ticket text";
Notification n = new Notification(R.drawable.icon, "ticker text", System.currentTimeMillis());
PendingIntent appIntent = PendingIntent.getActivity(context, 0, contentIntent, 0);
n.setLatestEventInfo(context, "1", "2", appIntent);
mNotificationManager.notify(YOURAPP_NOTIFICATION_ID, n);
}