Android jar包里面有assets目录下有文件,APP的assets里面也有文件,如何读呢?

来源:互联网 发布:软件测试的目标 编辑:程序博客网 时间:2024/04/30 07:01
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();
 
 }

}

0 0
原创粉丝点击