react-native-apk
A react-native library to get various informations about an Android app.
Getting started
$ yarn add react-native-apk
Mostly automatic installation
$ react-native link react-native-apk
Manual installation
Android
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import be.skyzohlabs.rnapk.ReactNativeAPKPackage;
to the imports at the top of the file - Add
new ReactNativeAPKPackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':react-native-apk' project(':react-native-apk').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-apk/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-apk')
SDK 24 and higher
As of SDK version 24 (7.0) Android requires you to set up a Fileprovider for installing apks. To do so add the following to your AndroidManifest.xml file:
<application>
...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
</application>
In android/app/src/main/res/xml folder (create it if it does not exist) add a file named filepaths.xml and paste the following contents:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Select one of the following based on your apk location -->
<cache-path name="cache" path="/"/>
<!-- <files-path name="name" path="/" /> -->
<!-- <external-path name="name" path="/" /> -->
<!-- <external-files-path name="name" path="path" /> -->
<!-- <external-cache-path name="name" path="path" /> -->
<!-- <external-media-path name="name" path="path" /> -->
</paths>
In the above make sure your path is set correctly according to where your apk is on the device.
The example above shows a fileprovider for an app local cache directory i.e something like:
/data/user/0/com.your.packagename/cache
For more info read the android documentation: (https://developer.android.com/reference/kotlin/androidx/core/content/FileProvider)
If the file you are trying to install is on external storage you will need the read and write external storage permissions in your AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
For Android SDK version 26 (8.0.0) and higher you may also be required to add the install packages permission:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
Usage
; // Install an app:ReactNativeAPK; // Uninstall an app:ReactNativeAPK; // Fetch if an app is installed on the device:ReactNativeAPK; // Get version of an installed app:ReactNativeAPK; // Get ALL the apps installed on the device:ReactNativeAPK; // Get apps the user has EXPLICITLY installed on the device:ReactNativeAPK; // Run an application:ReactNativeAPK;