默认情况下在我的 android 应用中启用所有通知设置
Posted
技术标签:
【中文标题】默认情况下在我的 android 应用中启用所有通知设置【英文标题】:Enable all notification settings by default in my android app 【发布时间】:2019-06-26 15:48:57 【问题描述】:有什么方法可以在我的应用安装后默认启用所有通知设置?
用户正在接收通知,但默认情况下声音是禁用的,我们需要在设备上手动启用它。并非所有用户都可以手动执行此操作。很高兴知道在安装我们的应用程序(如 WhatsApp 或 Telegram)时是否有任何方法可以检查所有这些内容(默认情况下它们会检查所有内容)
【问题讨论】:
【参考方案1】:尝试在 androidManifest 文件中使用以下权限
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
并为奥利奥以下和以上版本设置通知优先级IMPORTANCE_HIGH
用于奥利奥及以上版本,PRIORITY_HIGH or PRIORITY_MAX
用于以下奥利奥版本
Reference link for priority note
Oreo以下版本优先
mBuilder.setSmallIcon(R.drawable.app_logo)
.setAutoCancel(true)
.setContentIntent(resultPendingIntent)
.setContentTitle(title)
.setStyle(bigPictureStyle)
.setSound(soundUri)
.setPriority(NotificationCompat.PRIORITY_HIGH) // prirority here for version below Oreo
.setWhen(System.currentTimeMillis())
.setLargeIcon(BitmapFactory.decodeResource(mCtx.getResources(), R.drawable.app_logo))
.setContentText(message)
.build();
奥利奥及以上优先
Refer this link
【讨论】:
我需要在我的清单文件中添加,然后在我收到通知之后【参考方案2】:Android 8 或更高版本您需要使用 NotificationChannel 来启用声音、振动、声音等。
Uri notification_sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
AudioAttributes attributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.build();
notificationChannel.setSound(notification_sound, attributes);//for enable sound
notificationChannel.enableLights(true);
notificationManager.createNotificationChannel(notificationChannel);
但在 Redmi note 5 pro (MIUI 10.2.1.0) 中仍然禁用通知声音。我认为 MIUI 中存在错误。在 mi A1(Android one mobile) 中运行相同的代码,一切正常。它有效。
请参考此link 以了解有关通知渠道
的更多信息【讨论】:
我们正在使用 React Native ...我认为我们需要找到负责处理通知的代码并按照您的建议添加代码...如果可行,请告诉您!感谢您的回答 ! :) @CaptainMAD 你是用 react native 处理的吗?【参考方案3】:WhatsApp、Telegram、Snapchat 等。这些都是列入白名单的应用程序,这意味着软件包名称在操作系统级别进行了硬编码,以允许默认启用某些权限。我们的应用程序并非如此。因此,我们需要用户手动启用这些权限。
您可以自行检查。创建一个新的 android 应用程序,给出 Telegram 应用程序的包名(org.telegram.messenger),然后运行它。根本不做任何代码,也不需要打开应用程序。只需转到新创建的应用程序的通知设置,您可以在其中找到默认启用的所有权限。
希望你得到答案。
【讨论】:
以上是关于默认情况下在我的 android 应用中启用所有通知设置的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有谷歌地图 API 的情况下在我的应用程序中获取经度和纬度?
我可以在没有 Apple Developer Program 的情况下在我的 iOS 设备上测试我的 Ionic App
如何在不发送消息的情况下在 Android 中打开默认电子邮件客户端?