android 修改apk的asset目录后怎么安装

2020-05-07 综合 163阅读

在自己的app中安装assets目录下的apk文件的方法:

详细过程如下:

public class MainActivity extends Activity {

Context mContext;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mContext = this;

//Toast.makeText(this, ""+Environment.getExternalStorageDirectory().getAbsolutePath(), 0).show();

if(copyApkFromAssets(this, "test.apk", Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.apk")){

Builder m = new AlertDialog.Builder(mContext)

.setIcon(R.drawable.ic_launcher).setMessage("是否安装?")

.setIcon(R.drawable.ic_launcher)

.setPositiveButton("yes", new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.apk"),

"application/vnd.android.package-archive");

mContext.startActivity(intent);

}

});

m.show();

}

}

public 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;

}

}

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com