日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android底层oem,Android中如何实现OEM

發(fā)布時間:2025/3/15 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android底层oem,Android中如何实现OEM 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

/**

* @author Tibib

*

*/

public class AndroidManifestParser {

public String NS = "http://schemas.android.com/apk/res/android" ;

public AppInfo parse(InputStream in) throws Exception {

try {

//使用pull解析庫

XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();

NS = parser.getNamespace();

//設(shè)置使用 namespaces特性

parser.setFeature(XmlPullParser. FEATURE_PROCESS_NAMESPACES , true );

parser.setInput(in, "UTF-8" );

parser.nextTag();

return readAppInfo(parser);

} catch (Exception e){

e.printStackTrace();

throw e;

} finally {

in.close();

}

}

private AppInfo readAppInfo(XmlPullParser parser) throws Exception{

AppInfo appInfo = new AppInfo();

while (parser.next() != XmlPullParser. END_TAG) {

if (parser.getEventType() != XmlPullParser. START_TAG) {

continue ;

}

String name = parser.getName();

// Starts by looking for the General tag

if ("application" .equals(name)){

String attrLabelValue = parser.getAttributeValue( NS, "label" );

String attrIconValue = parser.getAttributeValue( NS, "icon" );

appInfo.setAppName(attrLabelValue.split( "/" )[1]);

appInfo.setIconName(attrIconValue.split( "/" )[1]);

}

else {

skip(parser);

}

}

return appInfo;

}

// Skips tags the parser isn't interested in. Uses depth to handle nested tags. i.e.,

// if the next tag after a START_TAG isn't a matching END_TAG, it keeps going until it

// finds the matching END_TAG (as indicated by the value of "depth" being 0).

private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {

if (parser.getEventType() != XmlPullParser. START_TAG) {

throw new IllegalStateException();

}

int depth = 1;

while (depth != 0) {

switch (parser.next()) {

case XmlPullParser. END_TAG:

depth--;

break ;

case XmlPullParser. START_TAG:

depth++;

break ;

}

}

}

}

修改strings.xml中name屬性為app_name(具體名稱看配置)的值

/**

* @author Tibib

*

*/

public class XmlModifyUtil {

/**

* 使用的是 jdom庫

*/

public static void modifyXML(File modifyXmlFile, String appNameAttrValue,

String appNameText) {

OutputStreamWriter bos = null ;

try {

SAXBuilder builder = new SAXBuilder();

if (modifyXmlFile.exists()) {

Document document = (Document) builder.build(modifyXmlFile);

Element root = document.getRootElement();

List stringChildList = root.getChildren( "string");

for (Element element : stringChildList) {

String nameAttrValue = element.getAttribute("name" )

.getValue();

if (nameAttrValue.equals(appNameAttrValue)) {

element.setText(appNameText);

}

}

String xmlFileData = new XMLOutputter().outputString(document);

// strings.xml默認是UTF-8格式

bos = new OutputStreamWriter(

new FileOutputStream(modifyXmlFile), "UTF-8" );

bos.write(xmlFileData);

bos.flush();

} else {

System. out .println("File does not exist" );

}

} catch (Exception ex) {

ex.printStackTrace();

} finally {

if (bos != null ) {

try {

bos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

執(zhí)行編譯和簽名命令

新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的android底层oem,Android中如何实现OEM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。