عمر سالم2 نشر 24 مارس 2021 أرسل تقرير نشر 24 مارس 2021 احاول كتابة كود للتأكد مما اذا كان الهاتف متصل بالانترنت، وان لم يكن، اريد فتح شاشة الاعدادات. componentWillMount(){ Linking.canOpenURL('app-settings:') .then(supported => { if (!supported) { console.log('Not supported URL: ' + url); } else { return Linking.openURL('app-settings:'); } }).catch(err => console.error('ERROR:', err)); } احصل على الخطأ: Not supported URL: app-settings اقتباس
0 إسلام عبدالعزيز نشر 24 مارس 2021 أرسل تقرير نشر 24 مارس 2021 عليك بكتابة Native Module مخصص بداخل مجلد الـ android، على سبيل المثال، OpenSettingsModule.java بداخل android/app/src/main/java/com/<projectname>/opensettings. لا تنسى عمل register لهذا الـ module بداخل OpenSettingsPackage.java. سنقوم بكتابة الكود التالي بداخل OpenSettingsModule.java: package com.<projectname>.opensettings; 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() { /** * .سيكون هذا اسم الوحدة التي سننشئها * * import { NativeModules } from 'react-native'; * * NativeModules.OpenSettings.openNetworkSettings( ... ); */ 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()); } } public OpenSettingsModule(ReactApplicationContext reactContext) { super(reactContext); } } الآن علينا تسجيل هذه الوحدة بداخل OpenSettingsPackage.java لنستطيع استخدامها: package com.<projectname>.opensettings; 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(); } } قبل الاستعمال، علينا توفير الحزمة بداخل MainApplication.java هكذا: import com.<projectname>.opensettings.*; @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), new OpenSettingsPackage() /* .هذه هي الوحدة التي قمنا بكتابتها */ ); } والآن، قم باستعماله بداخل React Native هكذا: import { NativeModules } from 'react-native'; function App() { const openSettings() { NativeModules.OpenSettings.openNetworkSettings(data => {}); } return ( <View> <Text onPress={openSettings}>Open Settings</Text> </View> ); } 1 اقتباس
السؤال
عمر سالم2
احاول كتابة كود للتأكد مما اذا كان الهاتف متصل بالانترنت، وان لم يكن، اريد فتح شاشة الاعدادات.
احصل على الخطأ:
Not supported URL: app-settings
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.