shakebug-react-native 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DeviceInfo/index.js.flow +177 -0
- package/DeviceInfo/index.ts +1034 -0
- package/DeviceInfo/internal/asyncHookWrappers.ts +59 -0
- package/DeviceInfo/internal/devicesWithDynamicIsland.ts +30 -0
- package/DeviceInfo/internal/devicesWithNotch.ts +374 -0
- package/DeviceInfo/internal/nativeInterface.ts +28 -0
- package/DeviceInfo/internal/privateTypes.ts +231 -0
- package/DeviceInfo/internal/supported-platform-info.ts +97 -0
- package/DeviceInfo/internal/types.ts +19 -0
- package/DeviceInfo/web/index.js +223 -0
- package/GetLocals/src/NativeRNLocalize.ts +18 -0
- package/GetLocals/src/constants.ts +269 -0
- package/GetLocals/src/index.ts +56 -0
- package/GetLocals/src/module.ts +51 -0
- package/GetLocals/src/module.web.ts +148 -0
- package/GetLocals/src/types.ts +31 -0
- package/GetLocation/LocationError.ts +20 -0
- package/GetLocation/index.ts +46 -0
- package/GetLocation/utils.ts +89 -0
- package/ImageOrVedioPicker/src/index.ts +28 -0
- package/ImageOrVedioPicker/src/platforms/NativeImagePicker.ts +10 -0
- package/ImageOrVedioPicker/src/platforms/native.ts +61 -0
- package/ImageOrVedioPicker/src/platforms/web.ts +159 -0
- package/ImageOrVedioPicker/src/types.ts +74 -0
- package/NetInfo/src/__tests__/eventListenerCallbacks.spec.ts +332 -0
- package/NetInfo/src/__tests__/fetch.spec.ts +479 -0
- package/NetInfo/src/index.ts +186 -0
- package/NetInfo/src/internal/__mocks__/nativeModule.ts +13 -0
- package/NetInfo/src/internal/defaultConfiguration.ts +17 -0
- package/NetInfo/src/internal/defaultConfiguration.web.ts +17 -0
- package/NetInfo/src/internal/internetReachability.ts +180 -0
- package/NetInfo/src/internal/nativeInterface.ts +43 -0
- package/NetInfo/src/internal/nativeInterface.web.ts +27 -0
- package/NetInfo/src/internal/nativeModule.ts +15 -0
- package/NetInfo/src/internal/nativeModule.web.ts +306 -0
- package/NetInfo/src/internal/privateTypes.ts +41 -0
- package/NetInfo/src/internal/state.ts +137 -0
- package/NetInfo/src/internal/types.ts +128 -0
- package/README.md +246 -0
- package/RecordScreen/src/index.tsx +75 -0
- package/ScreenShot/src/RNViewShot.js +3 -0
- package/ScreenShot/src/RNViewShot.web.js +42 -0
- package/ScreenShot/src/index.js +308 -0
- package/Sensor/src/index.js +14 -0
- package/Sensor/src/rnsensors.js +57 -0
- package/Sensor/src/sensors.js +97 -0
- package/VideoPlayer/PlayVideo.tsx +51 -0
- package/VideoPlayer/index.js +69 -0
- package/android/README.md +14 -0
- package/android/build/generated/source/buildConfig/debug/com/shakebug/BuildConfig.java +10 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +42 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +6 -0
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +47 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/xml_imagepicker_provider_paths.xml.flat +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +12 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ImageMetadata.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ImagePickerProvider.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Metadata.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Options.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Shakebug.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ShakebugPackage.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Utility.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Utils.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/VideoMetadata.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$2.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Formats.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Results.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +49 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +82 -0
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +42 -0
- package/android/build/intermediates/navigation_json/debug/navigation.json +1 -0
- package/android/build/intermediates/packaged_res/debug/values/values.xml +25 -0
- package/android/build/intermediates/packaged_res/debug/xml/imagepicker_provider_paths.xml +4 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/BuildConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImageMetadata.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImagePickerProvider.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Metadata.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Options.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Shakebug.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ShakebugPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utility.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utils.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/VideoMetadata.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Formats.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Results.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot.class +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +48 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +97 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build.gradle +235 -0
- package/android/src/main/AndroidManifest.xml +40 -0
- package/android/src/main/java/com/shakebug/AmazonFireDeviceConnectivityPoller.java +170 -0
- package/android/src/main/java/com/shakebug/BaseUtils.java +33 -0
- package/android/src/main/java/com/shakebug/BroadcastReceiverConnectivityReceiver.java +131 -0
- package/android/src/main/java/com/shakebug/ConnectivityReceiver.java +318 -0
- package/android/src/main/java/com/shakebug/CrashLoggerModule.java +48 -0
- package/android/src/main/java/com/shakebug/DateUtil.java +64 -0
- package/android/src/main/java/com/shakebug/DeviceType.java +18 -0
- package/android/src/main/java/com/shakebug/DeviceUtil.java +46 -0
- package/android/src/main/java/com/shakebug/DrawingView.java +90 -0
- package/android/src/main/java/com/shakebug/DrawingViewManager.java +38 -0
- package/android/src/main/java/com/shakebug/GetLocation.java +147 -0
- package/android/src/main/java/com/shakebug/ImageMetadata.java +42 -0
- package/android/src/main/java/com/shakebug/ImagePickerProvider.java +8 -0
- package/android/src/main/java/com/shakebug/Metadata.java +46 -0
- package/android/src/main/java/com/shakebug/NetInfoModule.java +79 -0
- package/android/src/main/java/com/shakebug/NetInfoUtils.java +50 -0
- package/android/src/main/java/com/shakebug/NetworkCallbackConnectivityReceiver.java +209 -0
- package/android/src/main/java/com/shakebug/Options.java +42 -0
- package/android/src/main/java/com/shakebug/RNDeviceModule.java +1036 -0
- package/android/src/main/java/com/shakebug/RNInstallReferrerClient.java +124 -0
- package/android/src/main/java/com/shakebug/RNLocalizeModule.java +79 -0
- package/android/src/main/java/com/shakebug/RNLocalizeModuleImpl.java +258 -0
- package/android/src/main/java/com/shakebug/ReactNativeGetLocationModule.java +95 -0
- package/android/src/main/java/com/shakebug/RecordScreenModule.java +202 -0
- package/android/src/main/java/com/shakebug/ScreenshotDetectorModule.java +63 -0
- package/android/src/main/java/com/shakebug/SettingsUtil.java +44 -0
- package/android/src/main/java/com/shakebug/Shakebug.java +181 -0
- package/android/src/main/java/com/shakebug/ShakebugPackage.java +75 -0
- package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModule.java +56 -0
- package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModuleImpl.java +230 -0
- package/android/src/main/java/com/shakebug/ShakebugSDKScreenShotModule.java +196 -0
- package/android/src/main/java/com/shakebug/SharedPreferencesModule.java +39 -0
- package/android/src/main/java/com/shakebug/UnitConverter.java +48 -0
- package/android/src/main/java/com/shakebug/Utility.java +29 -0
- package/android/src/main/java/com/shakebug/Utils.java +593 -0
- package/android/src/main/java/com/shakebug/VideoMetadata.java +91 -0
- package/android/src/main/java/com/shakebug/VideoPlayerModule.java +199 -0
- package/android/src/main/java/com/shakebug/VideoThumbnailModule.java +215 -0
- package/android/src/main/java/com/shakebug/VideoTrimModule.java +372 -0
- package/android/src/main/java/com/shakebug/ViewShot.java +627 -0
- package/android/src/main/java/com/shakebug/adapters/VideoTrimmerAdapter.java +54 -0
- package/android/src/main/java/com/shakebug/callback/SingleCallback.java +11 -0
- package/android/src/main/java/com/shakebug/interfaces/IVideoTrimmerView.java +5 -0
- package/android/src/main/java/com/shakebug/interfaces/VideoPlayerListner.java +5 -0
- package/android/src/main/java/com/shakebug/interfaces/VideoTrimListener.java +10 -0
- package/android/src/main/java/com/shakebug/resolver/DeviceIdResolver.java +87 -0
- package/android/src/main/java/com/shakebug/resolver/DeviceTypeResolver.java +94 -0
- package/android/src/main/java/com/shakebug/thread/BackgroundExecutor.java +246 -0
- package/android/src/main/java/com/shakebug/thread/UiThreadExecutor.java +120 -0
- package/android/src/main/java/com/shakebug/types/CellularGeneration.java +60 -0
- package/android/src/main/java/com/shakebug/types/ConnectionType.java +26 -0
- package/android/src/main/java/com/shakebug/utils/StorageUtil.java +139 -0
- package/android/src/main/java/com/shakebug/utils/VideoTrimmerUtil.java +89 -0
- package/android/src/main/java/com/shakebug/widgets/RangeSeekBarView.java +534 -0
- package/android/src/main/java/com/shakebug/widgets/SpacesItemDecoration2.java +32 -0
- package/android/src/main/java/com/shakebug/widgets/VideoPlayerView.java +429 -0
- package/android/src/main/java/com/shakebug/widgets/VideoTrimmerView.java +477 -0
- package/android/src/main/java/com/shakebug/widgets/ZVideoView.java +48 -0
- package/android/src/main/res/drawable/custom_progress.xml +16 -0
- package/android/src/main/res/drawable/custom_thumb.xml +4 -0
- package/android/src/main/res/drawable/ic_close_button.xml +10 -0
- package/android/src/main/res/drawable/ic_video_pause_black.png +0 -0
- package/android/src/main/res/drawable/ic_video_play_black.png +0 -0
- package/android/src/main/res/drawable/ic_video_thumb_handle.png +0 -0
- package/android/src/main/res/drawable/icon_seek_bar.png +0 -0
- package/android/src/main/res/layout/video_player_view.xml +121 -0
- package/android/src/main/res/layout/video_thumb_item_layout.xml +16 -0
- package/android/src/main/res/layout/video_trimmer_view.xml +148 -0
- package/android/src/main/res/values/colors.xml +17 -0
- package/android/src/main/res/values/strings.xml +14 -0
- package/android/src/main/res/xml/imagepicker_provider_paths.xml +4 -0
- package/ios/CammeraPermission/RNCameraPermission.h +16 -0
- package/ios/CammeraPermission/RNCameraPermission.m +46 -0
- package/ios/DeviceInfo/DeviceUID.h +14 -0
- package/ios/DeviceInfo/DeviceUID.m +202 -0
- package/ios/DeviceInfo/EnvironmentUtil.h +41 -0
- package/ios/DeviceInfo/EnvironmentUtil.m +56 -0
- package/ios/DeviceInfo/RNDeviceInfo.h +22 -0
- package/ios/DeviceInfo/RNDeviceInfo.m +918 -0
- package/ios/GetLocals/ShakebugSDKRNLocalize.h +21 -0
- package/ios/GetLocals/ShakebugSDKRNLocalize.m +296 -0
- package/ios/GetLocation/SettingsUtil.h +16 -0
- package/ios/GetLocation/SettingsUtil.m +21 -0
- package/ios/GetLocation/ShakebugSDKLocationModule.h +17 -0
- package/ios/GetLocation/ShakebugSDKLocationModule.m +218 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.h +40 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.m +588 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.h +26 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.m +194 -0
- package/ios/MicrophonePermissionManager.h +14 -0
- package/ios/MicrophonePermissionManager.m +35 -0
- package/ios/NetInfo/RNCConnectionState.h +42 -0
- package/ios/NetInfo/RNCConnectionState.m +119 -0
- package/ios/NetInfo/RNCConnectionStateWatcher.h +31 -0
- package/ios/NetInfo/RNCConnectionStateWatcher.m +136 -0
- package/ios/NetInfo/RNCNetInfo.h +13 -0
- package/ios/NetInfo/RNCNetInfo.m +269 -0
- package/ios/RecordScreen/ShakebugSDKRecordScreen.h +31 -0
- package/ios/RecordScreen/ShakebugSDKRecordScreen.m +309 -0
- package/ios/ScreenShot/ShakebugSDKRNViewShot.h +6 -0
- package/ios/ScreenShot/ShakebugSDKRNViewShot.m +186 -0
- package/ios/ScreenshotDetector/ScreenShotDetector.h +12 -0
- package/ios/ScreenshotDetector/ScreenShotDetector.m +37 -0
- package/ios/Senors/RNSensorsAccelerometer.h +22 -0
- package/ios/Senors/RNSensorsAccelerometer.m +162 -0
- package/ios/Senors/RNSensorsBarometer.h +22 -0
- package/ios/Senors/RNSensorsBarometer.m +141 -0
- package/ios/Senors/RNSensorsGravity.h +22 -0
- package/ios/Senors/RNSensorsGravity.m +165 -0
- package/ios/Senors/RNSensorsGyroscope.h +22 -0
- package/ios/Senors/RNSensorsGyroscope.m +160 -0
- package/ios/Senors/RNSensorsMagnetometer.h +22 -0
- package/ios/Senors/RNSensorsMagnetometer.m +163 -0
- package/ios/Senors/RNSensorsOrientation.h +22 -0
- package/ios/Senors/RNSensorsOrientation.m +189 -0
- package/ios/Senors/RNSensorsUtils.h +7 -0
- package/ios/Senors/RNSensorsUtils.m +9 -0
- package/ios/Shakebug.h +7 -0
- package/ios/Shakebug.m +16 -0
- package/ios/Shakebug.xcodeproj/project.pbxproj +872 -0
- package/ios/Shakebug.xcodeproj/xcshareddata/xcschemes/Shakebug.xcscheme +66 -0
- package/ios/Shakebug.xcworkspace/contents.xcworkspacedata +10 -0
- package/ios/Shakebug.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/SketchCanvas/DrawingView.h +18 -0
- package/ios/SketchCanvas/DrawingView.m +96 -0
- package/ios/SketchCanvas/DrawingViewManager.h +12 -0
- package/ios/SketchCanvas/DrawingViewManager.m +35 -0
- package/ios/Storage/SharedPreferencesModule.h +13 -0
- package/ios/Storage/SharedPreferencesModule.m +35 -0
- package/ios/Thumbnaill/VideoThumbnailManager.h +12 -0
- package/ios/Thumbnaill/VideoThumbnailManager.m +73 -0
- package/ios/TrimVideo/ShakebugSDKVideoTrim.swift +372 -0
- package/ios/TrimVideo/VideoTrim-Bridging-Header.h +10 -0
- package/ios/TrimVideo/VideoTrim.m +23 -0
- package/ios/TrimVideo/VideoTrimmer.swift +810 -0
- package/ios/TrimVideo/VideoTrimmerThumb.swift +119 -0
- package/ios/TrimVideo/VideoTrimmerViewController.swift +301 -0
- package/ios/VideoPlayer/VideoPlayerModule.h +14 -0
- package/ios/VideoPlayer/VideoPlayerModule.m +29 -0
- package/ios/VideoPlayer/VideoPlayerViewController.h +18 -0
- package/ios/VideoPlayer/VideoPlayerViewController.m +29 -0
- package/package.json +45 -0
- package/shakebug-react-native.podspec +50 -0
- package/src/APIs/AddIssue.js +70 -0
- package/src/APIs/EndSession.js +32 -0
- package/src/APIs/Event.js +39 -0
- package/src/APIs/MatchKey.js +40 -0
- package/src/APIs/StartSession.js +84 -0
- package/src/Assets/images/OpenSketch.png +0 -0
- package/src/Assets/images/Push.png +0 -0
- package/src/Assets/images/RemoveTextView.png +0 -0
- package/src/Assets/images/black.png +0 -0
- package/src/Assets/images/blue.png +0 -0
- package/src/Assets/images/borderdBlack.png +0 -0
- package/src/Assets/images/borderdBlue.png +0 -0
- package/src/Assets/images/borderdGreen.png +0 -0
- package/src/Assets/images/borderdRed.png +0 -0
- package/src/Assets/images/borderdYellow.png +0 -0
- package/src/Assets/images/clear.png +0 -0
- package/src/Assets/images/close.png +0 -0
- package/src/Assets/images/green.png +0 -0
- package/src/Assets/images/next.png +0 -0
- package/src/Assets/images/play.png +0 -0
- package/src/Assets/images/red.png +0 -0
- package/src/Assets/images/shake.png +0 -0
- package/src/Assets/images/shakebugLogo.png +0 -0
- package/src/Assets/images/stopButton.png +0 -0
- package/src/Assets/images/text_icon.png +0 -0
- package/src/Assets/images/yellow.png +0 -0
- package/src/Componanats/CustomAlert.js +80 -0
- package/src/Componanats/ErrorHandler.js +80 -0
- package/src/Componanats/GlobalStateContext.js +22 -0
- package/src/Componanats/KeyboardAvoidingWrapper.js +43 -0
- package/src/Componanats/NavigationContext.js +42 -0
- package/src/Componanats/ShakeFunction.js +562 -0
- package/src/Componanats/localization.js +482 -0
- package/src/Screens/AddDetailsScreen.js +462 -0
- package/src/Screens/FirstScreen.js +629 -0
- package/src/Screens/Shakebug.js +487 -0
- package/src/Screens/StrockView.js +20 -0
- package/src/Screens/TrimVideoScreen.js +81 -0
- package/src/Screens/TutorialScreen.js +36 -0
- package/src/index.tsx +117 -0
- package/trimVideo/src/index.tsx +141 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
package com.shakebug;
|
|
2
|
+
|
|
3
|
+
import android.content.SharedPreferences;
|
|
4
|
+
import android.content.Context;
|
|
5
|
+
import android.util.Log;
|
|
6
|
+
|
|
7
|
+
import java.lang.reflect.InvocationHandler;
|
|
8
|
+
import java.lang.reflect.Method;
|
|
9
|
+
import java.lang.reflect.Proxy;
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
public class RNInstallReferrerClient {
|
|
13
|
+
private static Class<?> InstallReferrerClientClazz;
|
|
14
|
+
private static Class<?> InstallReferrerStateListenerClazz;
|
|
15
|
+
private static Class<?> ReferrerDetailsClazz;
|
|
16
|
+
|
|
17
|
+
static {
|
|
18
|
+
try {
|
|
19
|
+
InstallReferrerClientClazz = Class.forName("com.android.installreferrer.api.InstallReferrerClient");
|
|
20
|
+
InstallReferrerStateListenerClazz = Class.forName("com.android.installreferrer.api.InstallReferrerStateListener");
|
|
21
|
+
ReferrerDetailsClazz = Class.forName("com.android.installreferrer.api.ReferrerDetails");
|
|
22
|
+
} catch (Exception e) {
|
|
23
|
+
System.err.println("RNInstallReferrerClient exception. 'installreferrer' APIs are unavailable.");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
private final SharedPreferences sharedPreferences;
|
|
28
|
+
private Object mReferrerClient;
|
|
29
|
+
private Object installReferrerStateListener;
|
|
30
|
+
|
|
31
|
+
// From InstallReferrerClient.InstallReferrerResponse
|
|
32
|
+
private static final int R_RESPONSE_OK = 0;
|
|
33
|
+
private static final int R_RESPONSE_SERVICE_UNAVAILABLE = 1;
|
|
34
|
+
private static final int R_RESPONSE_FEATURE_NOT_SUPPORTED = 2;
|
|
35
|
+
|
|
36
|
+
RNInstallReferrerClient(Context context) {
|
|
37
|
+
sharedPreferences = context.getSharedPreferences("react-native-device-info", Context.MODE_PRIVATE);
|
|
38
|
+
|
|
39
|
+
if (InstallReferrerClientClazz == null || InstallReferrerStateListenerClazz == null || ReferrerDetailsClazz == null) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
try {
|
|
44
|
+
// Build the InstallReferrerClient instance.
|
|
45
|
+
Method newBuilderMethod = InstallReferrerClientClazz.getMethod("newBuilder", Context.class);
|
|
46
|
+
Object builder = newBuilderMethod.invoke(null, context);
|
|
47
|
+
Method buildMethod = builder.getClass().getMethod("build");
|
|
48
|
+
mReferrerClient = buildMethod.invoke(builder);
|
|
49
|
+
|
|
50
|
+
// Create the InstallReferrerStateListener instance using a Proxy.
|
|
51
|
+
installReferrerStateListener = Proxy.newProxyInstance(
|
|
52
|
+
InstallReferrerStateListenerClazz.getClassLoader(),
|
|
53
|
+
new Class[]{InstallReferrerStateListenerClazz},
|
|
54
|
+
new InstallReferrerStateListenerProxy());
|
|
55
|
+
|
|
56
|
+
// Call startConnection on the client instance.
|
|
57
|
+
Method startConnectionMethod = InstallReferrerClientClazz.getMethod("startConnection", InstallReferrerStateListenerClazz);
|
|
58
|
+
startConnectionMethod.invoke(mReferrerClient, installReferrerStateListener);
|
|
59
|
+
} catch (Exception e) {
|
|
60
|
+
System.err.println("RNInstallReferrerClient exception. getInstallReferrer will be unavailable: " + e.getMessage());
|
|
61
|
+
e.printStackTrace(System.err);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private class InstallReferrerStateListenerProxy implements InvocationHandler {
|
|
66
|
+
@Override
|
|
67
|
+
public Object invoke(Object o, Method method, Object[] args) throws Throwable {
|
|
68
|
+
String methodName = method.getName();
|
|
69
|
+
try {
|
|
70
|
+
if (methodName.equals("onInstallReferrerSetupFinished") && args != null && args[0] instanceof Integer) {
|
|
71
|
+
onInstallReferrerSetupFinished((Integer) args[0]);
|
|
72
|
+
} else if (methodName.equals("onInstallReferrerServiceDisconnected")) {
|
|
73
|
+
onInstallReferrerServiceDisconnected();
|
|
74
|
+
}
|
|
75
|
+
} catch (Exception e) {
|
|
76
|
+
throw new RuntimeException("unexpected invocation exception: " + e.getMessage());
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public void onInstallReferrerSetupFinished(int responseCode) {
|
|
83
|
+
switch (responseCode) {
|
|
84
|
+
case R_RESPONSE_OK:
|
|
85
|
+
// Connection established
|
|
86
|
+
try {
|
|
87
|
+
//if (BuildConfig.DEBUG)
|
|
88
|
+
Log.d("InstallReferrerState", "OK");
|
|
89
|
+
Method getInstallReferrerMethod = InstallReferrerClientClazz.getMethod("getInstallReferrer");
|
|
90
|
+
Object response = getInstallReferrerMethod.invoke(mReferrerClient);
|
|
91
|
+
Method getInstallReferrerMethod2 = ReferrerDetailsClazz.getMethod("getInstallReferrer");
|
|
92
|
+
String referrer = (String) getInstallReferrerMethod2.invoke(response);
|
|
93
|
+
SharedPreferences.Editor editor = sharedPreferences.edit();
|
|
94
|
+
editor.putString("installReferrer", referrer);
|
|
95
|
+
editor.apply();
|
|
96
|
+
|
|
97
|
+
Method endConnectionMethod = InstallReferrerClientClazz.getMethod("endConnection");
|
|
98
|
+
endConnectionMethod.invoke(mReferrerClient);
|
|
99
|
+
} catch (Exception e) {
|
|
100
|
+
System.err.println("RNInstallReferrerClient exception. getInstallReferrer will be unavailable: " + e.getMessage());
|
|
101
|
+
e.printStackTrace(System.err);
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
case R_RESPONSE_FEATURE_NOT_SUPPORTED:
|
|
105
|
+
//if (BuildConfig.DEBUG)
|
|
106
|
+
Log.d("InstallReferrerState", "FEATURE_NOT_SUPPORTED");
|
|
107
|
+
// API not available on the current Play Store app
|
|
108
|
+
break;
|
|
109
|
+
case R_RESPONSE_SERVICE_UNAVAILABLE:
|
|
110
|
+
//if (BuildConfig.DEBUG)
|
|
111
|
+
Log.d("InstallReferrerState", "SERVICE_UNAVAILABLE");
|
|
112
|
+
// Connection could not be established
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
public void onInstallReferrerServiceDisconnected() {
|
|
118
|
+
// Documentation indicates the InstallReferrer connection will be maintained
|
|
119
|
+
// So there is really nothing to do here
|
|
120
|
+
//if (BuildConfig.DEBUG)
|
|
121
|
+
Log.d("RNInstallReferrerClient", "InstallReferrerService disconnected");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
package com.shakebug;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
6
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
7
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
8
|
+
import com.facebook.react.bridge.WritableArray;
|
|
9
|
+
import com.facebook.react.bridge.WritableMap;
|
|
10
|
+
import com.facebook.react.module.annotations.ReactModule;
|
|
11
|
+
|
|
12
|
+
@ReactModule(name = RNLocalizeModuleImpl.NAME)
|
|
13
|
+
public class RNLocalizeModule extends ReactContextBaseJavaModule {
|
|
14
|
+
|
|
15
|
+
public RNLocalizeModule(ReactApplicationContext reactContext) {
|
|
16
|
+
super(reactContext);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@NonNull
|
|
20
|
+
@Override
|
|
21
|
+
public String getName() {
|
|
22
|
+
return RNLocalizeModuleImpl.NAME;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
26
|
+
public String getCalendar() {
|
|
27
|
+
return RNLocalizeModuleImpl.getCalendar();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
31
|
+
public String getCountry() {
|
|
32
|
+
return RNLocalizeModuleImpl.getCountry(getReactApplicationContext());
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
36
|
+
public WritableArray getCurrencies() {
|
|
37
|
+
return RNLocalizeModuleImpl.getCurrencies(getReactApplicationContext());
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
41
|
+
public WritableArray getLocales() {
|
|
42
|
+
return RNLocalizeModuleImpl.getLocales(getReactApplicationContext());
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
46
|
+
public WritableMap getNumberFormatSettings() {
|
|
47
|
+
return RNLocalizeModuleImpl.getNumberFormatSettings(getReactApplicationContext());
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
51
|
+
public String getTemperatureUnit() {
|
|
52
|
+
return RNLocalizeModuleImpl.getTemperatureUnit(getReactApplicationContext());
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
56
|
+
public String getTimeZone() {
|
|
57
|
+
return RNLocalizeModuleImpl.getTimeZone();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
61
|
+
public boolean uses24HourClock() {
|
|
62
|
+
return RNLocalizeModuleImpl.uses24HourClock(getReactApplicationContext());
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
66
|
+
public boolean usesMetricSystem() {
|
|
67
|
+
return RNLocalizeModuleImpl.usesMetricSystem(getReactApplicationContext());
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
71
|
+
public Boolean usesAutoDateAndTime() {
|
|
72
|
+
return RNLocalizeModuleImpl.usesAutoDateAndTime(getReactApplicationContext());
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
76
|
+
public Boolean usesAutoTimeZone() {
|
|
77
|
+
return RNLocalizeModuleImpl.usesAutoTimeZone(getReactApplicationContext());
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
package com.shakebug;
|
|
2
|
+
|
|
3
|
+
import android.annotation.SuppressLint;
|
|
4
|
+
import android.content.ContentResolver;
|
|
5
|
+
import android.content.res.Configuration;
|
|
6
|
+
import android.os.Build;
|
|
7
|
+
import android.provider.Settings;
|
|
8
|
+
import android.text.TextUtils;
|
|
9
|
+
import android.text.format.DateFormat;
|
|
10
|
+
import android.view.View;
|
|
11
|
+
|
|
12
|
+
import androidx.annotation.NonNull;
|
|
13
|
+
import androidx.core.os.LocaleListCompat;
|
|
14
|
+
|
|
15
|
+
import com.facebook.react.bridge.Arguments;
|
|
16
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
17
|
+
import com.facebook.react.bridge.WritableArray;
|
|
18
|
+
import com.facebook.react.bridge.WritableMap;
|
|
19
|
+
|
|
20
|
+
import java.lang.reflect.Method;
|
|
21
|
+
import java.text.DecimalFormatSymbols;
|
|
22
|
+
import java.util.ArrayList;
|
|
23
|
+
import java.util.Arrays;
|
|
24
|
+
import java.util.Currency;
|
|
25
|
+
import java.util.List;
|
|
26
|
+
import java.util.Locale;
|
|
27
|
+
import java.util.Objects;
|
|
28
|
+
import java.util.TimeZone;
|
|
29
|
+
|
|
30
|
+
public class RNLocalizeModuleImpl {
|
|
31
|
+
|
|
32
|
+
public static final String NAME = "ShakebugSDKRNLocalize";
|
|
33
|
+
|
|
34
|
+
private static final List<String> USES_FAHRENHEIT =
|
|
35
|
+
Arrays.asList("BS", "BZ", "KY", "PR", "PW", "US");
|
|
36
|
+
private static final List<String> USES_IMPERIAL=
|
|
37
|
+
Arrays.asList("LR", "MM", "US");
|
|
38
|
+
|
|
39
|
+
// Internal
|
|
40
|
+
|
|
41
|
+
private static @NonNull String createLanguageTag(@NonNull String languageCode,
|
|
42
|
+
@NonNull String scriptCode,
|
|
43
|
+
@NonNull String countryCode) {
|
|
44
|
+
String languageTag = languageCode;
|
|
45
|
+
|
|
46
|
+
if (!TextUtils.isEmpty(scriptCode)) {
|
|
47
|
+
languageTag += "-" + scriptCode;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return languageTag + "-" + countryCode;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
private static @NonNull String getCountryCodeForLocale(Locale locale) {
|
|
54
|
+
try {
|
|
55
|
+
String countryCode = locale.getCountry();
|
|
56
|
+
|
|
57
|
+
if (countryCode.equals("419")) {
|
|
58
|
+
return "UN";
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return TextUtils.isEmpty(countryCode) ? "" : countryCode.toUpperCase();
|
|
62
|
+
} catch (Exception ignored) {
|
|
63
|
+
return "";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private static @NonNull String getCurrencyCodeForLocale(@NonNull Locale locale) {
|
|
68
|
+
try {
|
|
69
|
+
Currency currency = Currency.getInstance(locale);
|
|
70
|
+
return currency == null ? "" : currency.getCurrencyCode();
|
|
71
|
+
} catch (Exception ignored) {
|
|
72
|
+
return "";
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
private static @NonNull String getLanguageCodeForLocale(@NonNull Locale locale) {
|
|
77
|
+
String language = locale.getLanguage();
|
|
78
|
+
|
|
79
|
+
switch (language) {
|
|
80
|
+
case "iw":
|
|
81
|
+
return "he";
|
|
82
|
+
case "in":
|
|
83
|
+
return "id";
|
|
84
|
+
case "ji":
|
|
85
|
+
return "yi";
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return language;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
private static @NonNull String getScriptCodeForLocale(@NonNull Locale locale) {
|
|
92
|
+
String script = locale.getScript();
|
|
93
|
+
return TextUtils.isEmpty(script) ? "" : script;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
private static @NonNull Locale getSystemLocale(ReactApplicationContext reactContext) {
|
|
97
|
+
Configuration config = reactContext
|
|
98
|
+
.getResources()
|
|
99
|
+
.getConfiguration();
|
|
100
|
+
|
|
101
|
+
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
|
|
102
|
+
? config.getLocales().get(0)
|
|
103
|
+
: config.locale;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
private static @NonNull List<Locale> getSystemLocales(ReactApplicationContext reactContext) {
|
|
107
|
+
List<Locale> locales = new ArrayList<>();
|
|
108
|
+
|
|
109
|
+
Configuration config = reactContext
|
|
110
|
+
.getResources()
|
|
111
|
+
.getConfiguration();
|
|
112
|
+
|
|
113
|
+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
|
114
|
+
locales.add(config.locale);
|
|
115
|
+
return locales;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
LocaleListCompat list = LocaleListCompat.getDefault();
|
|
119
|
+
|
|
120
|
+
for (int i = 0; i < list.size(); i++) {
|
|
121
|
+
locales.add(list.get(i));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return locales;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
private static @NonNull String getMiuiRegionCode() {
|
|
128
|
+
try {
|
|
129
|
+
@SuppressLint("PrivateApi")
|
|
130
|
+
Class<?> systemProperties = Class.forName("android.os.SystemProperties");
|
|
131
|
+
Method get = systemProperties.getMethod("get", String.class);
|
|
132
|
+
|
|
133
|
+
return (String) Objects.requireNonNull(get.invoke(systemProperties, "ro.miui.region"));
|
|
134
|
+
} catch (Exception ignored) {
|
|
135
|
+
return "";
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Implementation
|
|
140
|
+
|
|
141
|
+
public static @NonNull String getCalendar() {
|
|
142
|
+
return "gregorian";
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
public static @NonNull String getCountry(ReactApplicationContext reactContext) {
|
|
146
|
+
String miuiRegionCode = getMiuiRegionCode();
|
|
147
|
+
|
|
148
|
+
if (!TextUtils.isEmpty((miuiRegionCode))) {
|
|
149
|
+
return miuiRegionCode;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
Locale systemLocale = getSystemLocale(reactContext);
|
|
153
|
+
String countryCode = getCountryCodeForLocale(systemLocale);
|
|
154
|
+
|
|
155
|
+
if (TextUtils.isEmpty(countryCode)) {
|
|
156
|
+
return "US";
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return countryCode;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
public static @NonNull WritableArray getCurrencies(ReactApplicationContext reactContext) {
|
|
163
|
+
List<Locale> systemLocales = getSystemLocales(reactContext);
|
|
164
|
+
List<String> currenciesList = new ArrayList<>();
|
|
165
|
+
WritableArray currencies = Arguments.createArray();
|
|
166
|
+
|
|
167
|
+
for (Locale systemLocale: systemLocales) {
|
|
168
|
+
String currencyCode = getCurrencyCodeForLocale(systemLocale);
|
|
169
|
+
|
|
170
|
+
if (!TextUtils.isEmpty(currencyCode) && !currenciesList.contains(currencyCode)) {
|
|
171
|
+
currenciesList.add(currencyCode);
|
|
172
|
+
currencies.pushString(currencyCode);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (currencies.size() == 0) {
|
|
177
|
+
currencies.pushString("USD");
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return currencies;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
public static @NonNull WritableArray getLocales(ReactApplicationContext reactContext) {
|
|
184
|
+
List<Locale> systemLocales = getSystemLocales(reactContext);
|
|
185
|
+
List<String> languageTagsList = new ArrayList<>();
|
|
186
|
+
WritableArray locales = Arguments.createArray();
|
|
187
|
+
String currentCountryCode = getCountry(reactContext);
|
|
188
|
+
|
|
189
|
+
for (Locale systemLocale: systemLocales) {
|
|
190
|
+
String languageCode = getLanguageCodeForLocale(systemLocale);
|
|
191
|
+
String scriptCode = getScriptCodeForLocale(systemLocale);
|
|
192
|
+
String countryCode = getCountryCodeForLocale(systemLocale);
|
|
193
|
+
|
|
194
|
+
if (TextUtils.isEmpty(countryCode)) {
|
|
195
|
+
countryCode = currentCountryCode;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
String languageTag = createLanguageTag(languageCode, scriptCode, countryCode);
|
|
199
|
+
WritableMap locale = Arguments.createMap();
|
|
200
|
+
|
|
201
|
+
locale.putString("languageCode", languageCode);
|
|
202
|
+
locale.putString("countryCode", countryCode);
|
|
203
|
+
locale.putString("languageTag", languageTag);
|
|
204
|
+
locale.putBoolean("isRTL",
|
|
205
|
+
TextUtils.getLayoutDirectionFromLocale(systemLocale) == View.LAYOUT_DIRECTION_RTL);
|
|
206
|
+
|
|
207
|
+
if (!TextUtils.isEmpty(scriptCode)) {
|
|
208
|
+
locale.putString("scriptCode", scriptCode);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (!languageTagsList.contains(languageTag)) {
|
|
212
|
+
languageTagsList.add(languageTag);
|
|
213
|
+
locales.pushMap(locale);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return locales;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
public static @NonNull WritableMap getNumberFormatSettings(ReactApplicationContext reactContext) {
|
|
221
|
+
Locale systemLocale = getSystemLocale(reactContext);
|
|
222
|
+
DecimalFormatSymbols symbols = new DecimalFormatSymbols(systemLocale);
|
|
223
|
+
WritableMap settings = Arguments.createMap();
|
|
224
|
+
|
|
225
|
+
settings.putString("decimalSeparator", String.valueOf(symbols.getDecimalSeparator()));
|
|
226
|
+
settings.putString("groupingSeparator", String.valueOf(symbols.getGroupingSeparator()));
|
|
227
|
+
|
|
228
|
+
return settings;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
public static @NonNull String getTemperatureUnit(ReactApplicationContext reactContext) {
|
|
232
|
+
String currentCountryCode = getCountry(reactContext);
|
|
233
|
+
return USES_FAHRENHEIT.contains(currentCountryCode) ? "fahrenheit" : "celsius";
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
public static @NonNull String getTimeZone() {
|
|
237
|
+
return TimeZone.getDefault().getID();
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
public static boolean uses24HourClock(ReactApplicationContext reactContext) {
|
|
241
|
+
return DateFormat.is24HourFormat(reactContext);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
public static boolean usesMetricSystem(ReactApplicationContext reactContext) {
|
|
245
|
+
String currentCountryCode = getCountry(reactContext);
|
|
246
|
+
return !USES_IMPERIAL.contains(currentCountryCode);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
public static boolean usesAutoDateAndTime(ReactApplicationContext reactContext) {
|
|
250
|
+
ContentResolver resolver = reactContext.getContentResolver();
|
|
251
|
+
return Settings.Global.getInt(resolver, Settings.Global.AUTO_TIME, 0) != 0;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
public static boolean usesAutoTimeZone(ReactApplicationContext reactContext) {
|
|
255
|
+
ContentResolver resolver = reactContext.getContentResolver();
|
|
256
|
+
return Settings.Global.getInt(resolver, Settings.Global.AUTO_TIME_ZONE, 0) != 0;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
package com.shakebug;
|
|
2
|
+
|
|
3
|
+
import android.content.Context;
|
|
4
|
+
import android.location.Criteria;
|
|
5
|
+
import android.location.Location;
|
|
6
|
+
import android.location.LocationListener;
|
|
7
|
+
import android.location.LocationManager;
|
|
8
|
+
import android.os.Bundle;
|
|
9
|
+
import android.os.Looper;
|
|
10
|
+
import androidx.annotation.RequiresPermission;
|
|
11
|
+
import android.util.Log;
|
|
12
|
+
|
|
13
|
+
import com.facebook.react.bridge.Promise;
|
|
14
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
15
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
16
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
17
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
18
|
+
import com.facebook.react.bridge.WritableNativeMap;
|
|
19
|
+
import com.shakebug.GetLocation;
|
|
20
|
+
import com.shakebug.SettingsUtil;
|
|
21
|
+
|
|
22
|
+
import java.util.Timer;
|
|
23
|
+
import java.util.TimerTask;
|
|
24
|
+
|
|
25
|
+
public class ReactNativeGetLocationModule extends ReactContextBaseJavaModule {
|
|
26
|
+
|
|
27
|
+
public static final String NAME = "ShakebugSDKReactNativeGetLocation";
|
|
28
|
+
|
|
29
|
+
private LocationManager locationManager;
|
|
30
|
+
private GetLocation getLocation;
|
|
31
|
+
|
|
32
|
+
public ReactNativeGetLocationModule(ReactApplicationContext reactContext) {
|
|
33
|
+
super(reactContext);
|
|
34
|
+
try {
|
|
35
|
+
locationManager = (LocationManager) reactContext.getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
|
|
36
|
+
} catch (Exception ex) {
|
|
37
|
+
ex.printStackTrace();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@Override
|
|
42
|
+
public String getName() {
|
|
43
|
+
return NAME;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@ReactMethod
|
|
47
|
+
public void openWifiSettings(final Promise primise) {
|
|
48
|
+
try {
|
|
49
|
+
SettingsUtil.openWifiSettings(getReactApplicationContext());
|
|
50
|
+
primise.resolve(null);
|
|
51
|
+
} catch (Throwable ex) {
|
|
52
|
+
primise.reject(ex);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@ReactMethod
|
|
57
|
+
public void openCelularSettings(final Promise primise) {
|
|
58
|
+
try {
|
|
59
|
+
SettingsUtil.openCelularSettings(getReactApplicationContext());
|
|
60
|
+
primise.resolve(null);
|
|
61
|
+
} catch (Throwable ex) {
|
|
62
|
+
primise.reject(ex);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@ReactMethod
|
|
67
|
+
public void openGpsSettings(final Promise primise) {
|
|
68
|
+
try {
|
|
69
|
+
SettingsUtil.openGpsSettings(getReactApplicationContext());
|
|
70
|
+
primise.resolve(null);
|
|
71
|
+
} catch (Throwable ex) {
|
|
72
|
+
primise.reject(ex);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@ReactMethod
|
|
77
|
+
public void openAppSettings(final Promise promise) {
|
|
78
|
+
try {
|
|
79
|
+
SettingsUtil.openAppSettings(getReactApplicationContext());
|
|
80
|
+
promise.resolve(null);
|
|
81
|
+
} catch (Throwable ex) {
|
|
82
|
+
promise.reject(ex);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@ReactMethod
|
|
87
|
+
public void getCurrentPosition(ReadableMap options, Promise promise) {
|
|
88
|
+
if (getLocation != null) {
|
|
89
|
+
getLocation.cancel();
|
|
90
|
+
}
|
|
91
|
+
getLocation = new GetLocation(locationManager);
|
|
92
|
+
getLocation.get(options, promise);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
}
|