引用代码:
if(AutoInstall.copyApkFromAssets(activity, "UPPayPluginExPro.apk", Environment.getExternalStorageDirectory().getAbsolutePath()+"/UPPayPluginExPro.apk")){ Log.e("tag", "====2====="); AutoInstall.setUrl(Environment.getExternalStorageDirectory().getAbsolutePath()+"/UPPayPluginExPro.apk"); AutoInstall.install(ForMe2Activity.this); }else{ tomast("存储卡异常."); }
方法:
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.Context; import android.content.Intent; import android.net.Uri; public class AutoInstall { private static String mUrl; private static Context mContext; /** * 外部传进来的url以便定位需要安装的APK * * @param url */ public static void setUrl(String url) { mUrl = url; } /** * 安装 * * @param context * 接收外部传进来的context */ public static void install(Context context) { mContext = context; // 核心是下面几句代码 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse("file://" + mUrl), "application/vnd.android.package-archive"); mContext.startActivity(intent); } public static boolean copyApkFromAssets(Context context, String fileName, String path) { boolean copyIsFinish = false; try { InputStream is = context.getAssets().open(fileName); File file = new File(path); file.createNewFile(); FileOutputStream fos = new FileOutputStream(file); byte[] temp = new byte[1024]; int i = 0; while ((i = is.read(temp)) > 0) { fos.write(temp, 0, i); } fos.close(); is.close(); copyIsFinish = true; } catch (IOException e) { e.printStackTrace(); } return copyIsFinish; } }