小编And*_*des的帖子

Android:如何通过adb清除应用缓存并保留用户数据?

我正在Android应用程序上运行一些自动化测试(使用calabash-android),我需要以编程方式触发清除应用程序的缓存,而不是用户数据.

我发现adb shell pm clear解决方案不够用,因为它清除了用户数据(包括登录详细信息).

有没有办法在应用程序外部实现这一点(即没有代码更改)?

android caching clear adb

15
推荐指数
1
解决办法
3万
查看次数

Android:如何从PreferenceActivity/PreferenceFragment外部打开ListPreference对话框?

我已经为我的应用程序创建了一个设置菜单PreferenceFragment,并希望从应用程序的其他位置访问设置对话框,而无需打开设置菜单.

我的设置菜单包含:

设置菜单

当我从主要活动中单击此菜单项时,我想显示相同的对话框:

主要活动

main Activity有一个ListFragment是所有UI处理代码的地方.也不是一个PreferenceActivityPreferenceFragment.

我只是想调用相同的PreferenceFragment对象来进入对话框,否则我必须编写自定义代码来手动处理首选项更改,我想避免.

我想加入PreferenceFragmentFragmentManagerActivity会适当地初始化它,但它似乎并没有工作.

从我的菜单处理程序代码"排序"选项:

    SettingsFragment fragment = (SettingsFragment) getFragmentManager().findFragmentByTag(SettingsActivity.FRAGMENT_TAG);

    // first run case
    if (fragment == null) {
        fragment = SettingsFragment.newInstance(getActivity());
        getFragmentManager().beginTransaction().add(fragment, SettingsActivity.FRAGMENT_TAG).commit();
    } 

    CustomListPreference listPref = (CustomListPreference) fragment.findPreference(SettingsFragment.KEY_PREF_SORTORDER);
    listPref.show(); // invokes showDialog(null)
Run Code Online (Sandbox Code Playgroud)

这与一个NullPointerException打开崩溃listPref,显示PreferenceFragment未正确初始化.

有没有办法实现这种效果,还是我必须将功能写为AlertDialog并手动处理首选项更改?

android android-preferences preferencefragment

5
推荐指数
1
解决办法
845
查看次数

scapy:以符号/字符串形式获取DNSQR / DNSRR字段值

我正在尝试解码DNS流量并打印查询/响应数据,并且正在使用python / scapy来解码数据包。

一个代码片段:

def dns_sniff_v2(pkt):
    if IP in pkt:
        if pkt.haslayer(DNS):
            dns = pkt.getlayer(DNS)
            pkt_time = pkt.sprintf('%sent.time%')

            if pkt.haslayer(DNSQR):
                qr = pkt.getlayer(DNSQR) # DNS query
                values = [ pkt_time, str(ip_src), str(ip_dst), str(dns.id), str(qr.qname), str(qr.qtype), str(qr.qclass) ]

            print "|".join(values)

sniff(iface="eth0", filter="port 53", prn=dns_sniff_v2, store=0)
Run Code Online (Sandbox Code Playgroud)

问题是qr.qtype或者qr.qclass正在获取枚举的内部int表示形式(1)而不是符号字符串值(“ A”或“ IN”)。响应数据包的DNSRR部分也是如此。

如何获得符号形式的DNSQR或DNSRR字段?

python dns scapy

5
推荐指数
1
解决办法
1753
查看次数

Android:通过adb shell am启动应用信息对话框

我正在尝试编写一个脚本,它将通过adb为我正在测试的应用启动"app info"系统对话框.

我做了一些调查,并提出了这个命令,它将启动"app info"但失败并强制关闭(logcat中的NullPointerException):

adb shell am start -a android.intent.action.VIEW -n com.android.settings/.applications.InstalledAppDetails -es com.android.settings.ApplicationPkgName com.my.app -es pkg com.my.app
Run Code Online (Sandbox Code Playgroud)

似乎包名未正确传递.

am在这种情况下,将包名称参数传递给命令的正确方法是什么?

shell settings android launch adb

4
推荐指数
1
解决办法
4254
查看次数

tomcat中特定于应用程序的访问日志?

我试图在tomcat中为我的.war应用程序配置独立的访问日志,但我无法弄清楚什么是失败的.

目的是为进入我的应用程序的请求分别进行访问日志记录,而不必依赖tomcat的全局访问日志.

据我所知,我应该创建自己的上下文配置文件,并使用AccessLogValve指定我要写入的位置.

我在应用程序的WAR文件中创建了META-INF/context.xml,内容如下:

<Context path="/Stubby">
    <Valve class="org.apache.catalina.valves.AccessLogValve"
                    rotatable="true"
                    directory="/var/SP/log/stubby"
                    prefix="access.log_"
                    suffix=""
                    fileDateFormat="yyyyMMdd_HH"
                    pattern="combined"
                    buffered="false"
                    resolveHosts="false"
                    />
</Context>
Run Code Online (Sandbox Code Playgroud)

启动tomcat时,我看到此文件被复制到conf/Catalina/localhost/Stubby.xml,但在应用程序加载例程期间存在解析错误:

SEVERE: Begin event threw exception
java.lang.NullPointerException
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
(...)
Jul 13, 2011 6:16:12 PM org.apache.catalina.startup.ContextConfig processContextConfig
SEVERE: Parse error in context.xml for /Stubby
java.lang.NullPointerException
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2806)
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2832)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1359)
Run Code Online (Sandbox Code Playgroud)

这有什么不对?我是否遗漏了声明中的任何强制性财产?

logging tomcat context.xml access-log tomcat-valve

2
推荐指数
1
解决办法
2150
查看次数