1. 程式人生 > >Android jar包裡面有assets目錄下有檔案,APP的assets裡面也有檔案,如何讀呢?

Android jar包裡面有assets目錄下有檔案,APP的assets裡面也有檔案,如何讀呢?

jar 包中可以寫 assets資料夾, APP裡面同時也可以寫assets,但是隻要assets下面的檔案不同名就可以了,忒棒 !!!




如果assets目錄下有檔案的,匯出jar時需要注意,把assets目錄勾選上




package com.jds.readxml;
import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List;
import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory;
import carnetapp.mms.command.factory.CommandSendHelper; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.content.res.AssetManager; import android.os.Bundle;
public class MainActivity extends ActionBarActivity implements OnClickListener{
 private InputStream inputStream;  List<String> invokePermission = new ArrayList<String>();  List<String> callbackPermission = new ArrayList<String>();
 @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   findViewById(R.id.btn_send).setOnClickListener(this);   loadPermissions();   boolean result = checkPermission(CheckAction.INVOKE,     "255");   if (result) {    Log.d("per", "congratulations you have the permission");   } else {    Log.d("per", "you don't have the permission to invoke this method");
  }
 }

 /**   * 載入許可權表   */  private void loadPermissions() {   AssetManager assetManager = getAssets();   try {    inputStream = assetManager.open("permission2.xml");    if (inputStream != null) {     parseXML(inputStream);    }    for (int i = 0; i < invokePermission.size(); i++) {     System.out.println("request method " + invokePermission.get(i));     Log.d("per", "request method " + invokePermission.get(i));    }
   for (String s : callbackPermission) {     System.out.println("callback method " + s);     Log.d("per", "callback method " + s);    }
  } catch (IOException e) {    e.printStackTrace();   }
 }
 /**   * 檢查許可權   */  private boolean checkPermission(CheckAction action, String needPermission) {   if (TextUtils.isEmpty(needPermission.trim()))    return false;   if (action == CheckAction.INVOKE) {    // 呼叫方法    for (int i = 0; i < invokePermission.size(); i++) {     if (needPermission.endsWith(invokePermission.get(i).trim())) {      return true;     }    }
  } else {    // 設定回撥監聽    // 呼叫方法    for (int i = 0; i < callbackPermission.size(); i++) {     if (needPermission.endsWith(callbackPermission.get(i).trim())) {      return true;     }    }
  }
  return false;
 }
 /**   *   * @param 解析XML檔案   * @return   */  private boolean parseXML(InputStream in) {   if (in == null)    return false;   List<String> tempList = null; // 臨時的資料集   String method = null;   try {    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();    XmlPullParser parser = factory.newPullParser();    parser.setInput(in, "UTF-8");    // 產生第一個事件    int eventType = parser.getEventType();    while (eventType != XmlPullParser.END_DOCUMENT) {     switch (eventType) {     // 判斷當前事件是否為文件開始事件     case XmlPullParser.START_DOCUMENT:      tempList = new ArrayList<String>(); // 初始化許可權集合      break;     // 判斷當前事件是否為標籤元素開始事件     case XmlPullParser.START_TAG:      if (parser.getName().equals("request")) { // 判斷開始標籤元素是否是book       if (tempList != null && tempList.size() > 0) {        tempList.clear();       }
     } else if (parser.getName().equals("callback")) {       if (tempList != null && tempList.size() > 0) {        tempList.clear();       }
     } else if (parser.getName().equals("method")) { // 判斷開始標籤元素是否是method       eventType = parser.next();// 讓解析器指向method屬性的值       // 得到method標籤的屬性值       method = parser.getText();      }      break;
    // 判斷當前事件是否為標籤元素結束事件     case XmlPullParser.END_TAG:      if (parser.getName().equals("request")) {       if (tempList != null) {        invokePermission.addAll(tempList);       }      } else if (parser.getName().equals("callback")) {       if (tempList != null) {        callbackPermission.addAll(tempList);       }      } else {       // 得到方法物件       tempList.add(method);
     }
     break;     }     // 進入下一個元素並觸發相應事件     eventType = parser.next();    }   } catch (Exception e) {    e.printStackTrace();    return false;   }
  return true;
 }
 @Override  public void onClick(View v) {   CommandSendHelper.getInstance().askForBTConnectionState();    }
}