如何在小米设备中以编程方式允许通知声音

Posted

技术标签:

【中文标题】如何在小米设备中以编程方式允许通知声音【英文标题】:How to Allow notification sound programmatically in Xiomi devices 【发布时间】:2021-05-25 12:43:27 【问题描述】:

通知声音设置在小米设备中始终禁用。查看下图。

我想以编程方式启用声音。发现了类似的 *** 问题,但没有任何帮助。

设备:红米 Note 5 pro、红米 Note 9 pro

操作系统:MIUI 11、MIUI 12

注意:但它在所有其他设备上都可以正常工作。仅在小米设备中存在问题

【问题讨论】:

您能否分享您的代码,该代码适用于除上述设备之外的所有其他设备? 嗨,你找到了解决这个问题的方法吗? @SerkanKOCAMAN 没有。如果你找到了请回答 不,我想这不可能。 @SerkanKOCAMAN 哦,好的,谢谢 【参考方案1】:

2 个月前我正在寻找同样的问题,由于小米的限制,它变得更加困难,基本上你必须让你的应用程序在没有限制的情况下运行节省电池设置并让用户在哪里自动启动他必须点击切换按钮才能添加您的应用。

提示用户为您的应用禁用电池优化:

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onStart()
   
       String packageName = "com.example.myapp";
       PowerManager powerManager = (PowerManager)getApplicationContext().getSystemService(POWER_SERVICE);        
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) 
            Intent i = new Intent();
            if (!powerManager.isIgnoringBatteryOptimizations(packageName)) 
                i.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                i.setData(Uri.parse("package:" + packageName));
                startActivity(i);
            
        
    

要让应用使用它,它还必须持有Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS permission


您还必须提示用户将您的应用添加到自动启动 (original credit):

String manufacturer = "xiaomi";
if (manufacturer.equalsIgnoreCase(android.os.Build.MANUFACTURER)) 
    //this will open auto start screen where user can enable permission for your app
    Intent intent1 = new Intent();
    intent1.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
    startActivity(intent1);

它现在应该可以工作了,如果有帮助,请告诉我!

【讨论】:

对不起。我的问题是“允许声音”。这个答案不能解决我的问题。已验证。

以上是关于如何在小米设备中以编程方式允许通知声音的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中以编程方式检测MIUI ROM?

当app运行时,如何在android中以编程方式关闭通知?

如何在 android 中以编程方式在小米手机安全应用程序中为我的应用程序启用自动启动选项

如何以编程方式播放 Android NFC 通知声音?

如何在 swift Xcode 中以编程方式绑定/配对蓝牙 LE 设备?

如何在android中以编程方式从通知栏中删除通知?