Java 无法从LogCat内部服务分析字符串
因此,我有一个这样的字符串(从LogCat获得),我从下面的函数中接收:Java 无法从LogCat内部服务分析字符串,java,android,string,Java,Android,String,因此,我有一个这样的字符串(从LogCat获得),我从下面的函数中接收: private OriginalPermissions identifyPermission(AccessibilityEvent event) { List < AccessibilityNodeInfo > mFoundNodeInfos; AccessibilityNodeInfo nodeInfo = event.getSource(); for (Map.Entry <
private OriginalPermissions identifyPermission(AccessibilityEvent event) {
List < AccessibilityNodeInfo > mFoundNodeInfos;
AccessibilityNodeInfo nodeInfo = event.getSource();
for (Map.Entry < OriginalPermissions, String > permissions: pePers.entrySet()) {
mFoundNodeInfos = nodeInfo.findAccessibilityNodeInfosByText(permissions.getValue());
//Get Application Information
Log.d("Information", appNamer(String.valueOf(mFoundNodeInfos)));
if (mFoundNodeInfos.size() == 1) return permissions.getKey();
}
return OriginalPermissions.OTHER;
}
现在我必须得到两个单词Allow
和to
之间的字符串。我尝试的是:
private String appNamer(String parse){
parse = parse.substring(parse.indexOf("Allow") + 6 , parse.length());
parse = parse.substring(0, parse.indexOf(' '));
return parse;
}
这段代码在个人基础上运行得非常好,但是当在我的android应用程序中运行时,我立即得到一个ArrayIndexOutOfBounds异常
Log.d("Information", appNamer(appNamer(String.valueOf(mFoundNodeInfos))));
这是一个例外:
FATAL EXCEPTION: Thread-5
Process: com.triple.m.crabzilla.pepers, PID: 31783
java.lang.StringIndexOutOfBoundsException: length=2; regionStart=5; regionLength=-3
at java.lang.String.substring(String.java:1931)
at com.triple.m.crabzilla.pepers.PePersDetectorService.appNamer(PePersDetectorService.java:253)
at com.triple.m.crabzilla.pepers.PePersDetectorService.identifyPermission(PePersDetectorService.java:243)
at com.triple.m.crabzilla.pepers.PePersDetectorService.handlePermissionRequest(PePersDetectorService.java:80)
at com.triple.m.crabzilla.pepers.PePersDetectorService.access$300(PePersDetectorService.java:29)
at com.triple.m.crabzilla.pepers.PePersDetectorService$AccessibilityEventProcessor$1.run(PePersDetectorService.java:134)
at java.lang.Thread.run(Thread.java:761)
如果没有字符串解析逻辑,日志
可以完美地工作!我哪里做错了?
谢谢。好的。。当被问到的时候,我会写下这个作为回答 在解析字符串之前打印它。它可能不是你想象的那样
一般来说,不要假设变量的值,不要滥用
print
函数和调试模式。这将告诉您程序中实际发生的情况,并防止您查找错误。在解析字符串之前,请尝试打印字符串。它可能不是你想象的那样。完美!请写下这封信作为我的答案。我只是要确保绳子的长度足够大!
FATAL EXCEPTION: Thread-5
Process: com.triple.m.crabzilla.pepers, PID: 31783
java.lang.StringIndexOutOfBoundsException: length=2; regionStart=5; regionLength=-3
at java.lang.String.substring(String.java:1931)
at com.triple.m.crabzilla.pepers.PePersDetectorService.appNamer(PePersDetectorService.java:253)
at com.triple.m.crabzilla.pepers.PePersDetectorService.identifyPermission(PePersDetectorService.java:243)
at com.triple.m.crabzilla.pepers.PePersDetectorService.handlePermissionRequest(PePersDetectorService.java:80)
at com.triple.m.crabzilla.pepers.PePersDetectorService.access$300(PePersDetectorService.java:29)
at com.triple.m.crabzilla.pepers.PePersDetectorService$AccessibilityEventProcessor$1.run(PePersDetectorService.java:134)
at java.lang.Thread.run(Thread.java:761)