
package com.iwhalecloud.picedit;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

import com.dyh.rnpicture.edit.AddWatermarkActivity;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.runtimepermission.PermissionsManager;
import com.runtimepermission.PermissionsResultAction;

import android.Manifest;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;

public class RNAPPUpdateModule extends ReactContextBaseJavaModule {

    private final ReactApplicationContext reactContext;

    private String selectedImagePath;

    public RNAPPUpdateModule(ReactApplicationContext reactContext) {
        super(reactContext);
        this.reactContext = reactContext;
    }

    public Activity getActivity() {
        return reactContext.getCurrentActivity();
    }

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

    @ReactMethod
    public void updateApp(String url, final Callback resultCallBack) {

        // String[] strs = {
        // Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE
        // };
        // PermissionsManager.getInstance().requestPermissionsIfNecessaryForResult(getActivity(), strs,
        // new PermissionsResultAction() {
        // @Override
        // public void onGranted() {
        //
        // selectedImagePath = url;
        // HttpDownloader httpDownloader=new HttpDownloader();
        // int lrc=httpDownloader.downFile(selectedImagePath,"lovePic","loveMaker.apk");
        // installApk("lovePic","loveMaker.apk");
        // System.out.println(lrc);
        // }
        //
        // @Override
        // public void onDenied(String permission) {
        // Toast.makeText(getActivity(), "缺少" + permission, Toast.LENGTH_SHORT).show();
        //
        // }
        // });
        openBrowser(getActivity(), url);

    }

    /**
     * 调用第三方浏览器打开
     * 
     * @param context
     * @param url 要浏览的资源地址
     */
    public static void openBrowser(Context context, String url) {
        final Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(url));
        // 注意此处的判断intent.resolveActivity()可以返回显示该Intent的Activity对应的组件名
        // 官方解释 : Name of the component implementing an activity that can display the intent
        if (intent.resolveActivity(context.getPackageManager()) != null) {
//            final ComponentName componentName = intent.resolveActivity(context.getPackageManager());
            // 打印Log
            // ComponentName到底是什么
            // L.d("componentName
            // = " +
            // componentName.getClassName());
            context.startActivity(Intent.createChooser(intent, "请选择浏览器"));
        }
        else {
            Toast.makeText(context.getApplicationContext(), "请下载浏览器", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 安装APK文件
     */
    private void installApk(String path, String fileName) {
        // 通过Intent安装APK文件
        String url = "file://" + Environment.getExternalStorageDirectory() + File.separator + path + File.separator
            + fileName;
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        i.setDataAndType(Uri.parse(url), "application/vnd.android.package-archive");
        getActivity().startActivity(i);
        android.os.Process.killProcess(android.os.Process.myPid());
    }

}