react-native 跳转到ios/android 权限设置界面

ios

使用react-native中Linking

import { Linking } from ‘react-native‘;

Linking.openURL(‘app-settings:‘)
  .catch((err) => console.log(‘error‘, err));

android

1、在android/app/src/main/java/com/<projectname>文件夹下创建opensettings文件夹

2、在opensettings文件夹下创建模块文件OpenSettingsModule.java(模块功能)

package com.<projectname>.opensettings; // 记得把<projectname>改为你的项目名称
import android.app.Activity;
import android.content.Intent;

import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReactContextBaseJavaModule;

public class OpenSettingsModule extends ReactContextBaseJavaModule {

  @Override
  public String getName() {
    /**
     * return the string name of the NativeModule which represents this class in JavaScript
     * In JS access this module through React.NativeModules.OpenSettings
     */
    return "OpenSettings";
  }

  @ReactMethod
  public void openNetworkSettings(Callback cb) {
    Activity currentActivity = getCurrentActivity();

    if (currentActivity == null) {
      cb.invoke(false);
      return;
    }
    try {
      currentActivity.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
      cb.invoke(true);
    } catch (Exception e) {
      cb.invoke(e.getMessage());
    }
  }

  /* constructor */
  public OpenSettingsModule(ReactApplicationContext reactContext) {
    super(reactContext);
  }
}

上面的模块功能可以通过调用openNetworkSettings函数打开android设置。

3、在opensettings文件夹下创建包文件OpenSettingsPackage.java(注册模块OpenSettingsModule)

package com.<projectname>.opensettings; // 记得把<projectname>改为你的项目名称
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class OpenSettingsPackage implements ReactPackage {
  @Override
  public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
    List<NativeModule> modules = new ArrayList<>();

    modules.add(new OpenSettingsModule(reactContext));

    return modules;
  }

//   @Override
//   public List<<Class>? extends JavaScriptModule> createJSModules() {
//     return Collections.emptyList();
//   }

  @Override
  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
    return Collections.emptyList();
  }
}

4、把包提供到MainApplication.java文件的getPackages方法中:

import com.<projectname>.opensettings.*; // 还是要修改成自己项目名
...

@Override
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
      new MainReactPackage(),
      ...
      new OpenSettingsPackage() /* <---- add here */
  );
}

5、准备工作完成,接下来调用:

import { NativeModules } from ‘react-native‘

NativeModules.OpenSettings.openNetworkSettings((data) => {
  console.log(‘call back data‘, data);
});  

原文地址:https://www.cnblogs.com/qiqi715/p/10150964.html

时间: 2024-08-07 22:32:23

react-native 跳转到ios/android 权限设置界面的相关文章

React Native之微信分享(iOS Android)

React Native之微信分享(iOS Android) 在使用React Native开发项目的时候,基本都会使用到微信好友或者微信朋友圈分享功能吧,那么今天我就带大家实现以下RN微信好友以及朋友圈的分享功能. 一,应用申请审核 大家需要去微信开发平台去注册账号并且创建一个移动应用.(地址:https://open.weixin.qq.com),然后根据流程申请即可.但是需要注意的是Android需要获取签名信息: 下载安装上面的签名信息包apk,然后在上面输入android项目的包名,点

30天React Native从零到IOS/Android双平台发布总结

前言 本人有近十年的技术背景,除了APP开发之外对后端.前端等都比较熟悉,近期做一个APP项目需要IOS.Android两个平台都需要,只能硬着头皮上.其实很早就想开发APP也很早就接触Android.IOS原生开发.Hybrid.HTML5 WebAPP等开发但一直也没有做一个完整的项目,更多只是技术上的验证和尝试.这回利用这个项目机会成功的基于RN技术发布了IOS和Android两个平台的APP,项目周期由于IOS审核(第一次提交审核,修改了四次才通过)和自己假期的时间用了一个半月,实际用于

搭建基于Windows的React Native 开发环境(For Android)

React Native号称能跨平台开发IOS和Android的原生应用,想来必定会成为一种趋势.刚好计划开发一款手机APP,又没有相应的开发资源,决定自己摸索着试试. 第一步是搭建开发环境,以下是官方文档.网上资料,结合本人实际操作的总结: 一.       准备工作 (1)安装安卓SDK 根据React Native官网的指示(http://facebook.github.io/react-native/docs/android-setup.html#content),首先需要安装Andro

[Android Pro] Android权限设置android.permission完整列表

android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded) android.permission.ACCESS_COARSE_LOCATION允许一个程序访问Cel

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-&gt;WinForm版本新增新的用户权限设置界面

在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用户可访问的模块(菜单)与相应的操作权限.需要给某些角色添加与移除相应的用户等等,如果没有一个灵活可靠的配置管理工具将会使权限控制变得十分麻烦.用户授权管理模块就是为了方便用户.角色权限的集中统一管理而开发的模块.在用户授权管理模块,操作员可以添加或移动用户到指定的角色.可以分配或授予指定用户的模块(菜单)的访问权限.可以收回或分配指定用户的操作(功能)权限.可以对所有用户.角色.模块(菜单).操作(功能

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-&gt; Web版本新增新的用户权限设置界面

在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用户可访问的模块(菜单)与相应的操作权限.需要给某些角色添加与移除相应的用户等等,如果没有一个灵活可靠的配置管理工具将会使权限控制变得十分麻烦.用户授权管理模块就是为了方便用户.角色权限的集中统一管理而开发的模块.在用户授权管理模块,操作员可以添加或移动用户到指定的角色.可以分配或授予指定用户的模块(菜单)的访问权限.可以收回或分配指定用户的操作(功能)权限.可以对所有用户.角色.模块(菜单).操作(功能

【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要.那么Himi先讲解React Native与iOS之间的通信交互. 本篇主要分为两部分讲解:(关于其中讲解的OC语法等不介绍,不懂的请自行学习) 1. React Native 访问iOS 2. iOS访问React Native     一:React Native 访问iOS 1. 我们想要JS调用OC函数,就要实现一个"RCTBridgeModule"协议的Objective-C类 所以首先我们先创建一个oc新类,  

iOS开发之如何跳到系统设置里的各种设置界面

Posted by 李刚 Dec 1st, 2015 10:12 pm  ios开发 本文出处刚刚在线:http://www.superqq.com/blog/2015/12/01/jump-setting-per-page/ 定位服务 定位服务有很多APP都有,如果用户关闭了定位,那么,我们在APP里面可以提示用户打开定位服务.点击到设置界面设置,直接跳到定位服务设置界面.代码如下: //定位服务设置界面 NSURL *url = [NSURL URLWithString:@"prefs:ro

iOS开发之设置界面的抽取

几乎每款app都会有一个设置的界面!!! 那么我们的设置界面到底要怎么写才能最方便使用呢?下面我就来说说我的想法. 1.观察原型图 2.找出相同的东西,目的是抽出一个基类模块,只要我写好了这个控制器,其它的界面全部都写好了 3.判断是用纯代码还是storyboard,如果界面的控件位置都是固定,用storyboard. 什么时候用静态单元格:如果界面cell跟系统自带的cell完全差不多,就可以选择静态单元格 如果不相似: 1.判断其它cell是否全部差不多,如果全部差不多,可以使用静态单元格