package com.cnull.apkinstaller;

import android.os.Build;
import android.support.v4.content.FileProvider;
import android.util.Log;
import android.widget.Toast;

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

import java.util.HashMap;
import java.util.Map;

import android.content.Intent;
import android.net.Uri;
import java.io.File;

public class ApkInstallerModule extends ReactContextBaseJavaModule {
  private ReactApplicationContext _context = null;

  // private static final String DURATION_SHORT_KEY = "SHORT";
  // private static final String DURATION_LONG_KEY = "LONG";

  public ApkInstallerModule(ReactApplicationContext reactContext) {
    super(reactContext);
    _context = reactContext;
  }

  @Override
  public String getName() {
    return "ApkInstaller";
  }

  @Override
  public Map<String, Object> getConstants() {
    final Map<String, Object> constants = new HashMap<>();
    // constants.put(DURATION_SHORT_KEY, Toast.LENGTH_SHORT);
    // constants.put(DURATION_LONG_KEY, Toast.LENGTH_LONG);
    return constants;
  }

  @ReactMethod
  // public void show(String message, int duration) {
  public void test(String message) {
    Toast.makeText(getReactApplicationContext(), message, Toast.LENGTH_LONG).show();
  }

  @ReactMethod
  public void install(String path) {
      Intent intent = new Intent(Intent.ACTION_VIEW);
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      File apkFile= new File(path);
      Log.i("filePath:::",path);
      if (Build.VERSION.SDK_INT >= 24) {
          intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            final String packageName = getReactApplicationContext().getPackageName();
			final String authority =  new StringBuilder(packageName).append(".provider").toString();
			Log.i("authority:::::",authority.toString());
          Uri contentUri = FileProvider.getUriForFile(getReactApplicationContext(), authority, apkFile);
          intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
      } else {
          intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");

      }
      getReactApplicationContext().startActivity(intent);
//      String cmd = "chmod 777 " +path;
//      try {
//          Runtime.getRuntime().exec(cmd);
//      } catch (Exception e) {
//          e.printStackTrace();
//      }
//      Intent intent = new Intent(Intent.ACTION_VIEW);
//      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//      intent.setDataAndType(Uri.parse("file://" + path), "application/vnd.android.package-archive");
//      _context.startActivity(intent);
  }
}
