默认情况下在我的 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】:

WhatsAppTelegramSnapchat 等。这些都是列入白名单的应用程序,这意味着软件包名称在操作系统级别进行了硬编码,以允许默认启用某些权限。我们的应用程序并非如此。因此,我们需要用户手动启用这些权限。

您可以自行检查。创建一个新的 android 应用程序,给出 Telegram 应用程序的包名(org.telegram.messenger),然后运行它。根本不做任何代码,也不需要打开应用程序。只需转到新创建的应用程序的通知设置,您可以在其中找到默认启用的所有权限。

希望你得到答案。

【讨论】:

以上是关于默认情况下在我的 android 应用中启用所有通知设置的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有谷歌地图 API 的情况下在我的应用程序中获取经度和纬度?

我可以在没有 Apple Developer Program 的情况下在我的 iOS 设备上测试我的 Ionic App

如何在不复制/粘贴的情况下在我的所有活动中使用这些元素?

如何在不发送消息的情况下在 Android 中打开默认电子邮件客户端?

如何在不破坏相机应用程序的情况下在Android手机上打开手电筒[重复]

在不启用他们的位置的情况下在科尔多瓦上获取用户位置