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

Ran*_*mar 7 android android-notifications

小米设备中的通知声音设置始终处于禁用状态。检查下图。

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

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

操作系统:MIUI 11、MIUI 12

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

在此输入图像描述

Ant*_*REL 0

两个月前我一直在寻找同样的问题,由于小米的限制,它变得更加困难,基本上你必须让你的应用程序运行而不受保存电池设置的限制,并让用户自动启动他将有单击切换按钮添加您的应用程序。

提示用户禁用应用程序的电池优化:

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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于要使用此功能的应用程序,它还必须持有Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限


您还必须提示用户将您的应用程序添加到自动启动(原始信用):

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);
}
Run Code Online (Sandbox Code Playgroud)

现在应该可以工作了,请告诉我是否有帮助!