标签:oobe 拷贝文件 首次开机 android mediatek
MTK平台机器,首次开机会启动OOBE设置向导,我们可以在此应用中增加一个界面,从/system/目录下拷贝文件到/mnt/sdcard/目录下。
1.首先编译时要将文件从代码路径拷贝到对应的out目录,可以用在mk文件中实现:
方法①:如果文件较少,可以采用逐条拷贝方式,范例如下:
CUR_PATH := vendor/ThirdParty/App/tchip PRODUCT_COPY_FILES += $(CUR_PATH)/bootanimation.zip:system/media/bootanimation.zip $(CUR_PATH)/multimedia/MP4.mp4:system/media/multimedia/MP4.mp4
CUR_PATH := vendor/ThirdParty/App/qifei tchip_files := $(shell ls $(CUR_PATH)/multimedia ) PRODUCT_COPY_FILES += $(foreach file, $(tchip_files), $(CUR_PATH)/multimedia/$(file):system/media/multimedia/$(file))
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<activity
android:name=".basic.CopyFiles"></activity>
②编写Acitivity内容:
package com.mediatek.oobe.basic;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ProgressBar;
import android.widget.Toast;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.mediatek.oobe.R;
/**
* Created by Alex on 2015/1/12.
*/
public class CopyFiles extends Activity {
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.copyfiles);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
//copy();
new Thread(new TimeThread()).start();
//copy();
}
final Handler timeHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
// Toast.makeText(CopyFiles.this, "复制成功", Toast.LENGTH_SHORT).show();
finish();
}
super.handleMessage(msg);
}
};
public class TimeThread implements Runnable {
@Override
public void run() {
try {
copy();
//Message message = new Message();
//message.what = 1;
//timeHandler.sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void copy() {
final String FROMPATH = "/system/media/multimedia";
//final String FROMPATH = "/mnt/sdcard/Test";
final String TOPATH_MUSIC = "/mnt/sdcard/Music";
final String TOPATH_MOVIE = "/mnt/sdcard/Movie";
String[] filename = null;
File file = new File(FROMPATH);
if (file.exists()) {
filename = file.list();
}
File filestoreMusic = new File(TOPATH_MUSIC);
if (!filestoreMusic.exists()) {
filestoreMusic.mkdir();
}
File filestoreMovie = new File(TOPATH_MOVIE);
if (!filestoreMovie.exists()) {
filestoreMovie.mkdir();
}
for (int i = 0; i < filename.length; i++) {
Log.d("copyFiles", filename[i]);
InputStream fosfrom = null;
OutputStream fosto;
try {
fosfrom = new FileInputStream(FROMPATH + "/" + filename[i]);
if(i==3) {
fosto = new FileOutputStream(TOPATH_MOVIE + "/" + filename[i]);
} else {
fosto = new FileOutputStream(TOPATH_MUSIC + "/" + filename[i]);
}
byte bt[] = new byte[1024];
int c;
while ((c = fosfrom.read(bt)) > 0) {
fosto.write(bt, 0, c);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
fosfrom.close();
} catch (IOException e) {
e.printStackTrace();
}
progressBar.setProgress(i + 1);
if(i== filename.length-1){
Message message = new Message();
message.what = 1;
timeHandler.sendMessage(message);
}
}
try {
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
} catch (Exception e) {
e.printStackTrace();
}
}
}<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="fill_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_height="fill_parent">
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:max="6"
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/copyText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/file_copying" />
</LinearLayout>
</LinearLayout>
Android首次开机通过设置向导拷贝文件到sdcard目录下
标签:oobe 拷贝文件 首次开机 android mediatek
原文地址:http://blog.csdn.net/zhoumushui/article/details/42869073