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

标签 android react-native user-profile ring silent

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

最佳答案

您可以使用react-native-ringer-mode ,虽然 iOS 由于限制而不支持,但它在 Android 上却很有魅力。

安装软件包。

npm install react-native-ringer-mode

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

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

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

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>
  );
}

关于android - 如何在react-native android应用程序中单击时将铃声模式更改为静音/响铃/振动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67295408/

相关文章:

android - 具有固定宽度子项的 ViewPager

android - 在 Android Emulator 中,如何知道是否发生振动?

android - 如何在 cwac 的 MergeAdapter 中添加 ExpandableListadApter

android - Gradle 找不到用于使用 NDK 进行调试的 OpenCV 库

android - 发送坐标到设备

ios - 不能要求外部 react native 组件

reactjs - 以动画背景作为加载器的 React-native 图像

android - 获取用户 Google 个人资料图片的完整 URL

windows - 如何为每个用户设置时区设置?

database - 在没有数据库(如 MySQL)的情况下制作用户配置文件