读取其他应用的manifest文件



public class InterruptNotifyActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        AssetManager mCurAm;
        List<PackageInfo> l = getPackageManager().getInstalledPackages(
PackageManager.GET_DISABLED_COMPONENTS);
for (PackageInfo pi : l) {
if ((pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
try {
mCurAm = createPackageContext(pi.packageName, 0)
.getAssets();
Resources mCurResources = new Resources(mCurAm,
getResources().getDisplayMetrics(), null);
XmlResourceParser xml = mCurAm
.openXmlResourceParser("AndroidManifest.xml");
String str = getXMLText(xml, mCurResources);
if (str != null) {


System.out.println(pi.packageName+" manifest begin");
System.out.println(str);
System.out.println(pi.packageName+" manifest end");
System.out.println("***************************************************************");
System.out.println("\n\n\n");
}
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
    }
    


private String getXMLText(XmlResourceParser xrp, Resources currentResources) {
StringBuffer sb = new StringBuffer();
int indent = 0;
try {
int eventType = xrp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
// for sb
switch (eventType) {
case XmlPullParser.START_TAG:
indent += 1;
sb.append("\n");
insertSpaces(sb, indent);
sb.append("<" + xrp.getName());
sb.append(getAttribs(xrp, currentResources));
sb.append(">");
break;
case XmlPullParser.END_TAG:
indent -= 1;
sb.append("\n");
insertSpaces(sb, indent);
sb.append("</" + xrp.getName() + ">");
break;


case XmlPullParser.TEXT:
sb.append("" + xrp.getText());
break;


case XmlPullParser.CDSECT:
sb.append("<!CDATA[" + xrp.getText() + "]]>");
break;


case XmlPullParser.PROCESSING_INSTRUCTION:
sb.append("<?" + xrp.getText() + "?>");
break;


case XmlPullParser.COMMENT:
sb.append("<!--" + xrp.getText() + "-->");
break;
}
eventType = xrp.nextToken();
}
} catch (IOException ioe) {
} catch (XmlPullParserException xppe) {
}
return sb.toString();
}

protected void insertSpaces(StringBuffer sb, int num) {
if (sb == null)
return;
for (int i = 0; i < num; i++)
sb.append(" ");
}


private CharSequence getAttribs(XmlResourceParser xrp,
Resources currentResources) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < xrp.getAttributeCount(); i++)
sb.append("\n" + xrp.getAttributeName(i) + "=\""
+ resolveValue(xrp.getAttributeValue(i), currentResources)
+ "\"");
return sb;
}


private String resolveValue(String in, Resources r) {
if (in == null || !in.startsWith("@") || r == null)
return in;
try {
int num = Integer.parseInt(in.substring(1));
return r.getString(num);
} catch (NumberFormatException e) {
return in;
} catch (RuntimeException e) {
// formerly noted errors here, but simply not resolving works better
return in;
}
}
    
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp是一个基于Vue.js的跨平台开发框架,可以用于开发iOS、Android、H5等多个平台的应用程序。在UniApp中,可以使用uni-app提供的API来读取文件。 要读取文件,可以使用uni.chooseImage方法选择图片文件,然后使用uni.getImageInfo方法获取图片信息,最后使用uni.getFileSystemManager方法读取文件内容。 以下是读取文件的步骤: 1. 使用uni.chooseImage方法选择图片文件,该方法会返回选择的图片文件路径。 2. 使用uni.getImageInfo方法获取图片信息,传入选择的图片文件路径作为参数。该方法会返回图片的宽度、高度等信息。 3. 使用uni.getFileSystemManager方法创建文件系统管理器,通过调用该管理器的readFile方法读取文件内容,传入选择的图片文件路径和编码方式作为参数。该方法会返回文件内容。 注意:在使用uni.chooseImage方法时,需要在manifest.json文件中配置相应的权限。 以下是示例代码: ```javascript // 选择图片文件 uni.chooseImage({ count: 1, success: function(res) { var imagePath = res.tempFilePaths; // 获取图片信息 uni.getImageInfo({ src: imagePath, success: function(info) { console.log('图片宽度:', info.width); console.log('图片高度:', info.height); // 读取文件内容 uni.getFileSystemManager().readFile({ filePath: imagePath, encoding: 'utf8', success: function(data) { console.log('文件内容:', data.data); }, fail: function(error) { console.log('读取文件失败:', error); } }); }, fail: function(error) { console.log('获取图片信息失败:', error); } }); }, fail: function(error) { console.log('选择图片文件失败:', error); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值