package com.runt.android.utils;
|
|
import com.intellij.openapi.project.Project;
|
|
import org.w3c.dom.Document;
|
import org.w3c.dom.Element;
|
import org.w3c.dom.Node;
|
import org.w3c.dom.NodeList;
|
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
|
/**
|
* Created by 赵振良 on 2020/8/6
|
*/
|
public class Util {
|
private static Pattern humpPattern = Pattern.compile("[A-Z]");
|
|
/**
|
* 获取路径名
|
*/
|
public static String getPackageDir(Project project, String dir) {
|
String packageName = "";
|
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
try {
|
DocumentBuilder db = dbf.newDocumentBuilder();
|
Document doc = db.parse(project.getBasePath() + "/app/src/main/AndroidManifest.xml");
|
NodeList nodeList = doc.getElementsByTagName("manifest");
|
for (int i = 0; i < nodeList.getLength(); i++) {
|
Node node = nodeList.item(i);
|
Element element = (Element) node;
|
packageName = element.getAttribute("package");
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
String split = packageName.replace(".","/");
|
String dirs[] = dir.split(split);
|
if(dirs.length < 2){
|
return packageName;
|
}else{
|
String resultPackage = packageName+(dirs[1].replace("/","."));
|
return resultPackage;
|
}
|
}
|
|
/**
|
* 获取包名
|
* @param project
|
* @return
|
*/
|
public static String getPackageId(Project project){
|
String packageName = "";
|
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
try {
|
DocumentBuilder db = dbf.newDocumentBuilder();
|
Document doc = db.parse(project.getBasePath() + "/app/src/main/AndroidManifest.xml");
|
NodeList nodeList = doc.getElementsByTagName("manifest");
|
for (int i = 0; i < nodeList.getLength(); i++) {
|
Node node = nodeList.item(i);
|
Element element = (Element) node;
|
packageName = element.getAttribute("package");
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return packageName;
|
}
|
|
/**
|
* 驼峰命名转下划线命名
|
* @param str
|
* @return
|
*/
|
public static String humpToLine(String str) {
|
Matcher matcher = humpPattern.matcher(str);
|
StringBuffer sb = new StringBuffer();
|
while (matcher.find()) {
|
matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
|
}
|
matcher.appendTail(sb);
|
String result = sb.toString();
|
int length = result.length();
|
if(result.startsWith("_")){
|
result = result.substring(1,length);
|
}
|
return result;
|
}
|
}
|