Android首次開機通過設定嚮導拷貝檔案到sdcard目錄下

來源:互聯網
上載者:User

標籤:oobe   拷貝檔案   首次開機   android   mediatek   

MTK平台機器,首次開機會啟動OOBE設定嚮導,我們可以在此應用中增加一個介面,從/system/目錄下拷貝檔案到/mnt/sdcard/目錄下。

1.首先編譯時間要將檔案從代碼路徑拷貝到對應的out目錄,可以用在mk檔案中實現:
方法①:如果檔案較少,可以採用逐條拷貝方式,範例如下:

CUR_PATH := vendor/ThirdParty/App/tchipPRODUCT_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/qifeitchip_files := $(shell ls $(CUR_PATH)/multimedia )PRODUCT_COPY_FILES += $(foreach file, $(tchip_files),         $(CUR_PATH)/multimedia/$(file):system/media/multimedia/$(file))

2.修改開機嚮導OOBE
mediatek/packages/apps/OOBE/
①在AndroidManifest.xml中添加許可權,並且聲明我們自訂的Activity:

<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目錄下

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.