Nightmarish Pawnshop Mystic
Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

rn-apk

0.2.9 • Public • Published

Forked and made changes from SkyzohKey

Enhanced List

  • Added callback parameter to function ReactNativeAPK.isAppInstalled
  • Resolve error Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag on Android 8.0 +
  • runApp add condition checking if package / activity is exist prevent app crash

rn-apk

npm version FOSSA Status

A react-native library to get various informations about an Android app.

Getting started

$ yarn add rn-apk

Mostly automatic installation

$ react-native link rn-apk

Manual installation

Android

  1. 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 the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':rn-apk'
    project(':rn-apk').projectDir = new File(rootProject.projectDir, '../node_modules/rn-apk/android')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':rn-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

import ReactNativeAPK from "rn-apk";
 
// Install an app:
ReactNativeAPK.installApp("path/to/apk-release.apk");
 
// Uninstall an app:
ReactNativeAPK.uninstallApp("org.package.name");
 
// Fetch if an app is installed on the device:
ReactNativeAPK.isAppInstalled("org.mozilla.klar", installed => {
  console.log("Is app installed?", installed);
});
 
// Get version of an installed app:
ReactNativeAPK.getAppVersion("org.mozilla.klar", version => {
  console.log("App version", version);
});
 
// Get ALL the apps installed on the device:
ReactNativeAPK.getApps(apps => {
  console.log(apps);
});
 
// Get apps the user has EXPLICITLY installed on the device:
ReactNativeAPK.getNonSystemApps(apps => {
  console.log(apps);
});
 
// Run an application:
ReactNativeAPK.runApp("org.mozilla.klar");

License

FOSSA Status

Install

npm i rn-apk

DownloadsWeekly Downloads

43

Version

0.2.9

License

MIT

Unpacked Size

15.6 kB

Total Files

8

Last publish

Collaborators

  • avatar