有时候我们需要将一些小软件嵌在我们的软件里面,那么我们就可以将这些apk放在我们的raw或者assets文件下进行暂时存储,那么下面我们用放在raw文件下进行展示安装这一过程。
首先我们要把我们需要隐藏我apk文件放在raw文件下,raw是在res下的一个文件夹,如果没有的同学们可以自己新建一个。
然后第一步我们需要读取到这个apk文件,这里我们的apk文件我取名叫tmp,给出代码:
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/app_tmp.apk");
try {
FileUtils.copyInputStreamToFile(getResources().openRawResource(R.raw.tmp), file);
} catch (Resources.NotFoundException e) {
} catch (IOException e) {
}
install(MainActivity.this, Uri.fromFile(file));
这里我们获取到了资源,有个FileUtils大家可能没有,这个来自一个jar包,名叫commons_io-2.2.jar,大家可以从网上下载,很容易下载到的,然后install是个方法,就是安装文件的方法,下面给出代码:
public static void install(Context context, Uri uri) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(uri, "application/vnd.android.package-archive");
context.startActivity(i);
}
到这里就结束了吗?不,我们如果尝试安装的话会报错:解析文件包时出现错误,实际上我们还需要添加权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>