关于android 怎样安装 assets文件下的apk

在自己的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;
	 }
}
时间: 2024-11-05 19:44:29

关于android 怎样安装 assets文件下的apk的相关文章

关于android 如何安装 assets文件下的apk

在自己的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; //Toa

Android开发之assets目录下资源使用总结

预前知识: Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可: 第二种是assets目录下存放的原生资源文件: 因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们.那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.ap

Android项目中gen文件下R文件无法生成的解决的方法

帮一个网友解决R文件无法生成的问题,搜集了些材料特整理例如以下,刚開始学习的人參考他人代码时极易出现此种问题,一般都是xml文件出错,无法被正确解析. gen文件夹无法更新,或者gen文件夹下的R.JAVA文件无法生成 1.gen文件夹的用处 android gen文件夹下的R.java并非由用户创建,而是androidproject本身将android的资源进行自己主动"编号"(ID)值. 2.gen文件夹下R文件无法更新/生成的原因 1)res文件夹下的layout下的xml文件名

Android项目中gen文件下R文件无法生成的解决办法

帮一个网友解决R文件无法生成的问题,搜集了些材料特整理如下,初学者参考他人代码时极易出现此种问题,一般都是xml文件出错,无法被正确解析. gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自动"编号"(ID)值. 2.gen目录下R文件无法更新/生成的原因 1)res目录下的layout下的xml文件名有错.按照android的命名规范是

Xamarin.Android 如何使用Assets目录下的文件

个人原创,转载注明出处:http://blog.csdn.net/supluo/article/details/43672411 Xamarin.Android  官网介绍地址:http://developer.xamarin.com/guides/android/application_fundamentals/resources_in_android/part_6_-_using_android_assets/ 这里插入一下Assets与Raw目录的异同点 这两个目录的相同点: 1. 这两个

Android Studio添加assets文件夹

Step #1:调出项目结构管理区域 View->Tool Windows->Project Step #2:结构管理区域选择“Project” Step #3:新建"assets"文件夹 app->src->main,new Directory,"assets" Step #4:配置 项目文件夹根目录下,xxx.iml文件里(xxx为项目名)添加如下代码: <option name="ASSETS_FOLDER_RELATI

#Android 里 raw和assets 文件夹的区别

以下是我通过整理网上与自己的经验所得. raw 和 assets 的相同点 它们会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式. raw 和 assets 的不同点 它们在代码中的不同方式 : assets: InputStream assets = getAssets().open("xxxx"); raw: InputStream raw = getResources().openRawResource(R.raw.xxxx) assets下可以创建目录

安卓获取Assets目录下的资源

获取Assets目录下的资源 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15

Android的xml/assets/raw资源使用详解

一.assets/xml/raw资源介绍 1.assets资源目录:assets目录下存放的资源代表应用无法直接访问的原生资源,这些文件将原封不动的存储到设备上,不会被编译为二进制形式,访问方式是通过文件名而不是资源ID.应用程序通过AssetManager以的字节流的形式来读取资源文件.assets与res/raw的区别是assets支持任意深度的子目录,这些资源文件不会生成任何资源ID.Android应用访问assets文件夹资源步骤如下: (1)先在Activity中调用getAssets