我目前正在开发一个Android应用程序和蓝牙对于该应用程序至关重要。我运行后台服务。后台服务的一个作用是检查蓝牙是否启用。如果不是,则会有新通知。当你点击它时,我想要启用蓝牙,用户能够恢复他正在做的任何事情。就是这样。
现在,当我点击通知时,它会启动一个新活动,并启用新视图和蓝牙。我不希望那种新观点存在。我在启用蓝牙后尝试使用finish(),但这会让我回到我应用中的最后一个活动,而不是我在按下通知之前使用的应用程序。
所以,我正在阅读新闻应用,点击通知和蓝牙启用,但也带我到我自己的应用程序而不是我正在使用的新闻应用程序。
这是发送的新通知:
if (!mBluetoothAdapter.isEnabled())
{
NotificationCompat.Builder mBuilder;
mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.bluetooth)
.setContentTitle("Bluetooth disabled")
.setContentText("Click here to enable bluetooth")
.setOngoing(true);
Intent resultIntent = new Intent(this, TurnOnBluetooth.class);
resultIntent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
int mNotificationId = 159;
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
mNotifyMgr.notify(mNotificationId, mBuilder.build());
}
}
这是TurnOnBluetooth.java中的onCreate():
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_turn_on_bluetooth);
NotificationManager mNotifyMgr =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothAdapter.enable();
mNotifyMgr.cancel(159);
finish();
}
请注意,我评论了setContentView();因为我不想要一个新的视图,我只想要打开蓝牙并在之后删除通知,而不是别的。并且在按下通知之前,finish()将我带回我的应用程序而不是我正在使用的应用程序。我怎么能做到这一点?
答案 0 :(得分:1)
我能够自己解决这个问题。我没有开始新的活动,而是使用了一个可以解决问题的广播接收器。
broadcastreceiver的onReceive():
public void onReceive(Context context, Intent intent) {
NotificationManager mNotifyMgr =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothAdapter.enable();
mNotifyMgr.cancel(159);
}
Manifest中的接收者:
<receiver
android:name="com.novioscan.service.NotificationReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="NotService"/>
</intent-filter>
</receiver>
新通知声明:
if(!mBluetoothAdapter.isEnabled()){
NotificationCompat.Builder mBuilder;
mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.bluetooth)
.setContentTitle("Bluetooth disabled")
.setContentText("Click here to enable bluetooth")
.setOngoing(true);
// Intent resultIntent = new Intent(this, TurnOnBluetooth.class);
Intent resultIntent = new Intent("NotService");
//resultIntent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
// Sets an ID for the notification
int mNotificationId = 159;
PendingIntent resultPendingIntent =
PendingIntent.getBroadcast(
this,
0,
resultIntent,
0
);
mBuilder.setContentIntent(resultPendingIntent);
// Builds the notification and issues it.
mNotifyMgr.notify(mNotificationId, mBuilder.build());
}
现在一切都很好用了:))