如何在 react-native android 应用程序中单击时将铃声模式更改为静音/响铃/振动?

Posted

技术标签:

【中文标题】如何在 react-native android 应用程序中单击时将铃声模式更改为静音/响铃/振动?【英文标题】:How to change ringer mode to Silent/Ring/Vibrate on click in react-native android application? 【发布时间】:2021-07-21 12:36:29 【问题描述】:

我正在使用 react-native 创建一个适用于 android 的应用程序。我需要根据请求将振铃模式更改为静音或振铃或振动,并且必须更改手机的振铃模式。 如何实现此功能?

【问题讨论】:

【参考方案1】:

您可以使用react-native-ringer-mode,虽然由于限制不支持 ios,但它在 Android 上就像一个魅力。

安装包。

npm install react-native-ringer-mode

将下面的行添加到您的AndroidManifest.xml,因为需要将模式更改为静音模式或从静音模式更改。

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

你可以像这样使用它。代码示例取自包 README。

import React from 'react';
import  View, Button  from 'react-native';

import 
  useRingerMode,
  RINGER_MODE,
  checkDndAccess,
  requestDndAccess,
 from 'react-native-ringer-mode';

export default function App() 
  const  mode, setMode  = useRingerMode();

  const changeMode = async (newMode) => 
    if (newMode === RINGER_MODE.silent || mode === RINGER_MODE.silent) 
      const hasDndAccess = await checkDndAccess();
      
      if (hasDndAccess === false) 
        // This function opens the DND settings.
        // You can ask user to give the permission with a modal before calling this function.
        requestDndAccess();
        return;
      
    

    setMode(newMode);
  ;

  return (
    <View>
      <Button title="Silent" onPress=() => changeMode(RINGER_MODE.silent) />
      <Button title="Normal" onPress=() => changeMode(RINGER_MODE.normal) />
      <Button title="Vibrate" onPress=() => changeMode(RINGER_MODE.vibrate) />
    </View>
  );

【讨论】:

以上是关于如何在 react-native android 应用程序中单击时将铃声模式更改为静音/响铃/振动?的主要内容,如果未能解决你的问题,请参考以下文章

React-native - 如何在 android 上监控原生端生成的网络请求?

如何检查android设备支持手电筒的`react-native`?

在 react-native 中,我如何在 ios 和 android 的图像上添加水印

如何将 React-Native 项目集成到 Android-Studio?

如何在 react-native 应用程序中更改 android 的键盘主题?

如何在 React-Native 中获取 Android 版本号? (不是 API 级别编号)