- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将应用程序更新到 8.1 后,通知未显示,我修复了它。现在,挂起的 Intent 没有按预期工作。
收到通知后,如果应用程序在后台,我将无法导航到该应用程序,如果它已关闭,则无法启动。
private void sendNotify(String messageBody) {
Intent intent = new Intent();
intent.setAction(Constants.NOTIFY);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
int uniqueId = (int) System.currentTimeMillis();
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Creates the PendingIntent
PendingIntent notifyPendingIntent =
PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
);
String channelID = "com.myapp.ind.push.ServiceListener";// The id of the channel.
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(channelID, "MyApp", importance);
// Create a notification and set the notification channel.
Notification notification = getNotificationBuilder(messageBody, notifyPendingIntent, defaultSoundUri)
.setChannelId(channelID)
.build();
if (notificationManager != null) {
notificationManager.createNotificationChannel(mChannel);
notificationManager.notify(uniqueId, notification);
}
} else if (notificationManager != null) {
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,
uniqueId /* Request code */,
intent,
PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = getNotificationBuilder(messageBody, pendingIntent, defaultSoundUri);
notificationManager.notify(uniqueId /* ID of notification */,
notificationBuilder.build());
}
}
private NotificationCompat.Builder getNotificationBuilder(String messageBody, PendingIntent pendingIntent, Uri defaultSoundUri) {
return new NotificationCompat.Builder(this)
.setSmallIcon(android.R.drawable.ic_dialog_info)
.setContentTitle(getString(R.string.notification_title))
.setContentText(messageBody)
.setStyle(new NotificationCompat.BigTextStyle().bigText(messageBody))
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
}
编辑:
点击通知它在 6.0 之前工作正常。更新到 8.0 后,它无法在 Google Pixel 设备上运行。它不会打开应用程序或将应用程序带到前台。
最佳答案
像下面这样创建一个 Receiver 类。并注册为 list 文件。
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() != null
&& intent.getAction().equals("My Call")) {
Intent startIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
context.startActivity(startIntent);
}
}
}
收到通知后来自 Notification 类的以下代码。
private void sendNotification() {
Intent intent = new Intent(this, Receiver.class);
intent.setAction("My Call");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
int uniqueId = (int) System.currentTimeMillis();
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,
uniqueId /* Request code */,
intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && notificationManager != null) {
String channelID = "Your Channel ID";// The id of the channel.
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(channelID, "My_Name", importance);
// Create a notification and set the notification channel.
Notification notification = getNotificationBuilder(messageBody, pendingIntent, defaultSoundUri)
.setChannelId(channelID)
.build();
notificationManager.createNotificationChannel(mChannel);
notificationManager.notify(uniqueId, notification);
} else if (notificationManager != null) {
NotificationCompat.Builder notificationBuilder = getNotificationBuilder();
notificationManager.notify(uniqueId /* ID of notification */,
notificationBuilder.build());
}
}
private NotificationCompat.Builder getNotificationBuilder() {
return new NotificationCompat.Builder(this)
.setSmallIcon(image)
.setContentTitle(title)
.setContentText(message)
.setStyle(new NotificationCompat.BigTextStyle().bigText(messageBody))
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
}
现在我在所有设备上都收到了通知。由于 Oreo 设备中的 Channel 实现,我之前也收到但未显示在状态栏中。现在完美运行。
关于android - Oreo 8.0 中的推送通知问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645550/
在 Android Oreo 中查找应用程序是否从最近列表中被杀死的替代方法是什么? 要求:应用程序终止状态必须保存在本地数据库中。 是否有任何可用的替代方法或任何库来监视最近被终止的应用程序 Act
我们有私有(private)应用商店,所以我们不需要设置目标 sdk 26(oreo) 或更高版本。 那么如果我将 target sdk 25 设置到我的应用程序,那么即使在 OREO 手机中它也会没
我正在实现代码以在 android Oreo 中获取来电号码。为此,我在服务中使用广播接收器。这是我到目前为止完成的代码。 public class CallService extends Servi
DatePickerDialog 的文本颜色在 oreo(谷歌像素)设备中变为白色,如下图所示,这在 oreo 之前的设备中看起来很完美。 抽屉菜单字体也变为白色,如下图所示,这在 oreo 之前的设
将build.gradle依赖更改为后 compile 'com.android.support:design:26.1.0' 如前所述here ,项目构建成功但是当我尝试运行它时会出现类似的错误
我用 startService() 命令启动了 LocationService,但是因为我了解到当应用程序处于后台时 Oreo 不会接受此服务,所以我切换到 作业计划, 我在 lollipop 和 J
我们现在将我们的应用程序从 Android 25 迁移到 compileSdkVersion 26 buildToolsVersion "26.0.0" 我也修改了所有的依赖版本。 我们仍在我们的应用
我正在使用后台服务获取用户位置并上传到服务器。 我使用了一个扩展 Service 类的 LocationTrack 类和扩展 BroadcastReciver 的 AlramReciver。 我在 l
我正在开发一个任务安排应用程序,它可以在特定时间提醒我某项任务。我曾经使用 getSystemService(AlarmManager.class).set(RTC_WAKEUP, millis, p
我有一个 SMS 监听器,它在 Oreo (API 26) 之前的版本中运行良好,但在 API 26 中似乎被忽略。根据文档,SMS_RECEIVED_ACTION 不受隐式广播限制 ( link )
是否可以更改 EditText 自动填充突出显示颜色?默认情况下,它具有可能与应用程序设计不兼容的黄色背景。 最佳答案 根据 Android 文档,要更改突出显示颜色,您必须编辑应用程序主题。您可以将
这个问题在这里已经有了答案: What are the background location limits in Android 8 (Oreo)? (1 个回答) 关闭去年。 所以,简而言之,我
我正在尝试为 API > 26 添加自定义声音通知。下面是代码 NotificationChannel notificationChannel = new NotificationChannel("c
我有一个应用程序,其中有一个名为“Crilee”的字体,它在其他设备上运行良好,但在 Android 的 Oreo 版本中运行不佳。我使用 settypeface() 来设置字体。我能知道为什么某些字
到目前为止,我已经调整了我的代码以使用 ContextCompat.startForegroundService(context, intentService); 来启动我的服务。这样,它也适用于 a
我有一个网络更改接收器类,它从广播接收器扩展,但我不太确定它是否在 android Oreo 中工作,奥利奥是否支持广播接收器,如果它不支持,还有什么方法可以做到 最佳答案 Oreo 支持广播接收器,
我的 Android 应用程序在 Android oreo 版本的白色圆圈内显示启动器图标。 我想显示启动器图标,因为默认情况下它在奥利奥设备上就像正方形。 浏览了各种博客,发现: 1) 移动用户可以
所以我对 Java 和 Android 都很陌生,正在为一个项目开发一个应用程序。在应用程序中,我希望拥有自己的图像库/查看器,专门用于我们将使用应用程序保存的图像。因此,我想使用 ViewPager
我尝试使用以下代码获取浏览器包,我有两个网络浏览器,UC Browser 和 Google Chrome。但这并没有给我返回任何浏览器。这仅发生在 Android Oreo 为 Google Pixe
我正在尝试在 Oreo 中共享一个音频文件。如果文件在设备的内部存储中,它运行正常,但如果文件存在于外部存储中,它会崩溃并给出此异常 - android.os.FileUriExposedExcept
我是一名优秀的程序员,十分优秀!