Android 内部存储安装apk文件实现

目前国内市场的山寨机横行,安卓手机升级也是一天一个样,对于原来老手机可能没有SDCARD,导致我们的APP不能下载资源,无法更新APP,针对这种情况有以下解决方案。
通过以下函数判断是否有SD卡再判断下载到哪个目录下。

 

/**
	 * 安装应用
	 */
	public static void update(File apkFile, Context context) {
		Intent intent = new Intent(Intent.ACTION_VIEW);
		if (apkFile != null && apkFile.exists()) {
			chmod(apkFile.getAbsolutePath());//授权
			intent.setDataAndType(Uri.fromFile(apkFile),
					"application/vnd.android.package-archive");
			intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			context.startActivity(intent);
		} else {
			MLog.makeText("安装失败,安装文件未找到");
		}
	}

	public static void chmod(String pathc) {
		String chmodCmd = "chmod 666 " + pathc;
		try {
			Runtime.getRuntime().exec(chmodCmd);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static boolean isMounted() {
		return Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED);
	}

/**
	 * 初始文件可以存储的位置
	 * @param context
	 */
	public static void init(Context context) {
		FileUtil.context = context;
		StringBuffer buffer = new StringBuffer();
		String pName = context.getPackageName();
		if (Tools.isMounted()) {
			buffer.append(Environment.getExternalStorageDirectory()
					.getAbsolutePath());
			buffer.append(File.separator);
			buffer.append(pName);
			fileDir = buffer.toString();
		} else {
			buffer.append(context.getFilesDir().getAbsolutePath());
			buffer.append(File.separator);
			buffer.append(pName);
			fileDir = buffer.toString();
		}
		File file = new File(fileDir);
		if (!file.exists())
			file.mkdir();
	}

  

 

时间: 2024-09-20 23:12:27

Android 内部存储安装apk文件实现的相关文章

android adb-mac下用Android adb命令安装apk文件到真机报错

问题描述 mac下用Android adb命令安装apk文件到真机报错 MacdeMacBook-Pro:~ mac$ adb devices List of devices attached 0021e8d2e115e57a device MacdeMacBook-Pro:~ mac$ adb install -r ~/downloads/app-release.apk failed to copy '/Users/mac/downloads/app-release.apk' to '/dat

Android安装apk文件并适配Android 7.0详解

Android安装apk文件并适配Android 7.0详解 首先在AndroidManifest.xml文件,activity同级节点注册provider: <provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.file_provider" android:exported="false"

《Android程序设计》一3.8 Android应用打包:.apk文件

3.8 Android应用打包:.apk文件 Android提供了一个名为apkbuilder的应用,它能够生成可安装的Android应用文件,这些应用文件的扩展名是.apk..apk是一种ZIP文件格式,它和很多其他面向Java的应用类似,包含应用说明.已经编译的应用类和应用资源.Android还提供了aapt工具对文件进行打包,这些文件也是生成.apk文件,但是开发人员通常倾向于在其开发环境中使用该工具构建他们的应用.绝大多数用户只是简单地依赖其IDE来创建其.apk文件. 一旦开发人员创建

apk访问下载-C#实现的一个.apk下载界面,用手机能下载不能安装.apk文件。

问题描述 C#实现的一个.apk下载界面,用手机能下载不能安装.apk文件. C#实现的一个.apk下载界面,在电脑访问下载下来的程序,可以安装,但是在手机上访问下载下来的文件不能安装.出现解析包时出现问题.

Android模拟器中安装apk的方法_Android

本文讲述了Android模拟器中安装apk的方法.分享给大家供大家参考,具体如下: 第一步: 在Eclipse中启动模拟器. 第二步: 打开doc命名窗口,转到你android sdk安装目录中的platform-tools下, 如我的是 E:/Program Files/andriod_sdk/platform-tools 第三步: 利用adb来对android进行安装操作.建议第三步使用方案一 方案一: 为了方便,我们应将要安装的apk直接拷到platform-tools所在的目录下,然后在

【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 view plaincopy to clipboardprint? PackageManager packageManager = this.getPackageManager();  List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);  PackageManager packageManager =

使用Android内部的DownloadProvider下载文件,并获取cache权限

 Android内部提供了一个DownloadProvider,是一个非常完整的下载工具,提供了很好的外部接口可以被其他应用程序调用,来完成下载工作.同时也提供和很好的下载.通知.存储等机制.在Android的Browser等工具里面都用到了这个DownloadProvider. 但是很遗憾的是,这个DownloadProvider不对app开发人员开放,只作为内部使用. 我们现在去探究如何将DownloadProvider拿来给自己用. 让我们先找到DownloadProvider不能用的原因

Android 模拟器上面安装.apk

1.运行SDK Manager,选择模拟器,并运行模拟器 2.将需要安装的apk文件复制到platform-tools目录下(默认在:C:\Program Files\Android\android-sdk-windows\platform-tools ).为安装方便,这里将其命名为game.apk 3.点击开始→运行,输入cmd,打开cmd窗口.输入cd C:\Program Files\android-sdk-windows\platform-tools,进入platform-tools目录

start bluestacks安装APK文件的两种方法

  Bluestacks是一款功能非常强大的安卓模拟器,它主要帮助用户让APK格式文件在电脑中运行,近期小编发现很多网络都在询问如何使用Bluestacks安装apk,其实APK文件的安装是非常简单的,用户只需要在电脑中安装Bluestacks模拟器后,该模拟器将自动关联电脑中的APK文件(我们电脑中的APK文件都会显示Bluestacks ico图标),用户只需要双击你所要安装的APK文件即可在Bluestacks中运行了,好了,我们下面看下详细的操作教程吧!   方法一: 1.找到您需要运行