美文网首页
Android内安装apk文件遇到的坑

Android内安装apk文件遇到的坑

作者: efd3a6f0145f | 来源:发表于2018-08-04 14:05 被阅读0次

    二种情况:7.0前后

    1.把apk放到raw文件夹下,首先复制文件到内部存储中。

    public void copyRawFile(Context context) {

    try {

    InputStream is = context.getResources().openRawResource(R.raw.home);

    FileOutputStream fos = context.openFileOutput("home.apk",

    context.MODE_PRIVATE);

    //            FileOutputStream fos = new FileOutputStream(mFile,context.MODE_PRIVATE);

                byte[] mbyte =new byte[1024];

    int len =0;

    while((len = is.read(mbyte)) >0){

    fos.write(mbyte,0, len);

    }

    is.close();

    fos.flush();

    fos.close();

    }catch (Exception e) {

    Log.d("TAG","copyRawFile: 异常了"+e.getMessage());

    }

    }

    public void install() {

    File file =new File(this.getFilesDir().getPath() + File.separator +"home.apk");

    Boolean bol = isAppInstall(mContext,"air.PTClient.home");//是否已安装

        if (bol)return;

    setUpdateDir(file);//相关权限

        Intent intent =new Intent(Intent.ACTION_VIEW);

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    Log.d("TAG","正常进行安装" + file);

    intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");

    startActivity(intent);

    }

    private boolean isAppInstall(Context mContext, String packageName) {

    PackageInfo mInfo;

    try {

    mInfo = mContext.getPackageManager().getPackageInfo(packageName,0);

    }catch (Exception e) {

    mInfo =null;

    Log.i(TAG,"没有发现安装的包名");

    }

    if (mInfo ==null) {

    return false;

    }else {

    return true;

    }

    }

    /**

    * @param updateDir 就是可以执行的文件

    *  void  修改文件的权限,可读、可写、可执行

    */

    private void setUpdateDir(File updateDir) {

    try {

    Process p = Runtime.getRuntime().exec("chmod 777 " + updateDir);

    int status = p.waitFor();

    }catch (IOException e) {

    e.printStackTrace();

    }catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    2. 这个需要自己实测,参考几篇博文。

    http://www.czhzero.com/2016/12/21/how-to-install-apk-on-Android7-0/

    https://www.cnblogs.com/newjeremy/p/7294519.html

    https://blog.csdn.net/liu540885284/article/details/78834971

    https://www.jianshu.com/p/ad751e66f575

    https://blog.csdn.net/czhpxl007/article/details/53781464

    相关文章

      网友评论

          本文标题:Android内安装apk文件遇到的坑

          本文链接:https://www.haomeiwen.com/subject/riqmvftx.html