关于android 怎样安装 assets文件下的apk
2023-09-11 14:21:00 时间
在自己的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; } }
相关文章
- [Android]中文API(一)android包下的那些类
- [Android Pro] 利用tcpdump和wireshark对android网络请求进行分析
- unity android 集成指南
- android混淆和反编译
- [工具] 护眼宝 – 傻瓜版屏幕蓝光过滤应用[Win/Android]
- 键盘--android 隐藏系统键盘
- 【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用
- 15、NFC技术:使用Android Beam技术传输文件
- macos安装android studio(Android Studio 2021.1.1)
- 说说Android的广播(1) - 普通广播,有序广播和粘性广播
- 腾讯技术团队最新出品,Android Framework系统框架底层原理解密
- Android 文件大小的转换和文件日期的获取
- Android 推断SD卡是否存在及容量查询
- 【Android Gradle 插件】PackagingOptions 配置 ③ ( merges 属性配置 | excludes 属性配置 )
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
- 【Android 逆向】GDA 逆向工具安装 ( GDA 下载 | GDA 简介 | 运行 GDA 分析 APK 文件 )
- 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★
- 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )
- 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )
- 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )
- 【Android先进】我们为什么要创建Activity基类Activity什么是一般的基类方法
- Android项目打包成APK文件
- Android系统JNI的实现方式
- android 创建目录/文件/读写文件
- Android指定SDK编译版本(七十七)
- 使用Android Studio build tensorflow/examples/android——直接用android studio即可
- Android Studio 4.2.2 Kotlin的import kotlinx.android.synthetic.main.(layout的xml名).view.*
- Android JNI读取本地文件和读取文件并且写入其他文件