Android内部ストレージインストールapkファイル実装
2343 ワード
現在、国内市場のパクリ機が横行しており、アンドロイドの携帯電話のアップグレードも一日一日となっている.従来の携帯電話にはSDCARDがない可能性があるため、私たちのアプリはリソースをダウンロードできず、アプリを更新できない.このような状況に対して、以下の解決策がある.以下の関数でSDカードがあるかどうかを判断し、どのディレクトリにダウンロードしたかを判断します.
本明細書の固定リンク:http://www.ithtw.com/910.html 転載ご明記ください:leehom 2015年01月22日IT 10万なぜ発表
/**
*
*/
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();
}