小编kda*_*das的帖子

如何禁用Android片段中的屏幕截图?

是否可以禁用片段中的屏幕捕获?我知道以下适用于Activity类

onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
                WindowManager.LayoutParams.FLAG_SECURE);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我有一个显示在活动之上的片段,该怎么办?我可以以某种方式禁用屏幕捕获?我试图在片段的onCreate()或onCreateView()方法中设置FLAG_SECURE,但它不起作用.我仍然可以拍摄屏幕截图.只有当我在父活动中添加标志时,我才能禁用它.

在相关的说明中,比方说,我在ParentActivity.java中有一个方法(扩展了Activity)

public void disableScreenCapture() {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
            WindowManager.LayoutParams.FLAG_SECURE);

}
Run Code Online (Sandbox Code Playgroud)

在我的ChildFragment.java中(扩展了Fragment)

            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                ParentActivity parentActivity = (ParentActivity)getActivity();
                parentActivity.disableScreenCapture(); //doesn't work
        }
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
                ParentActivity parentActivity = (ParentActivity)getActivity();
                parentActivity.disableScreenCapture(); //doesn't work either
    }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

提前致谢

android screenshot layoutparams android-fragments

5
推荐指数
2
解决办法
4184
查看次数

不使用bouncycastle将PrivateKey转换为pem字符串

我正在尝试将PrivateKey对象转换为pem格式字符串而不使用bouncycastle.以前我这样做:

    StringWriter str = new StringWriter();
    PEMWriter pemWriter = new PEMWriter(str);
    pemWriter.writeObject(privKey);
    pemWriter.close();
    str.close();        
    return str.toString().getBytes();
Run Code Online (Sandbox Code Playgroud)

现在我不想使用bouncycastle.如果我使用

    String code = "-----BEGIN RSA PRIVATE KEY-----\n";          
    String codenew =Base64.encodeBase64String(privKey.getEncoded());
    String myOutput = ""; 
    for (String substring : Splitter.fixedLength(64).split(codenew)) { 
      myOutput += substring + "\n"; 
    }
    code += myOutput.substring(0, myOutput.length() - 1);
    code += "\n-----END RSA PRIVATE KEY-----";                          
    return code.getBytes();
Run Code Online (Sandbox Code Playgroud)

上面的代码有效,我可以通过传递这个byte []来使用openssl解密.现在,我的问题是,如果我打印上述两段代码的pem字符串值,它们就不同了.如果我使用下面的openssl命令

$ openssl pkcs12 -in receiver.p12 -out receiver.pem -nodes

生成的pem字符串与PEMWriter的pem字符串相同,但不是另一个字符串.我想知道我可以稍微修改我的代码,以便打印时的字符串匹配openssl命令或PEMWriter生成的字符串.

由openssl/PEMWriter生成的pem:

-----BEGIN RSA PRIVATE KEY-----
MIIEpgIBAAKCAQEA9rbxqq+Zi70nRFAZe7SCTB6VgzP1PhkiUm0PmbwFmROSlSSy
yMPSyIzaQqwELyOSQTZtsT3jhd6MCFPBZntym63/GwDuethGSjE9y8rt/9yr+T3I
zz+6ABnZXHJ38tdGYataF1Ndi3CsY5NXGszVFv1Is17P5mbYWQgJ7QzI/a5mPKa+
9pVXsDQthEV3BVUawIEJJnS0THD5XZQJ/MX6F4RPn+2MC9i/RbcA0RVnLPmt2eiy
NV3+55sKdd7GpdMmEbRv9HZyW2xJNyu1xYbwU9YIP88dHCgvqoOgkAX2HLxCJOy6
2gvsS8J7HEbohD98dxPJX7P8w9juORi6Hpsq0wIDAQABAoIBAQDXStIdJtuRC+GG
RXfXca/6iP3j3qV2KSzATRe+CkvAR0o1CC9T7z6zb+bPI5kLIblxWvPiJaW0nn4I …
Run Code Online (Sandbox Code Playgroud)

openssl bouncycastle pem

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

在espresso中,我如何测试textview仅显示两行

我有一个TextView,其中包含以下文本:"line1.\nline2.\n line3"。我将TextView的末尾设置为椭圆形,并限制为最多两行。为了测试它是否显示椭圆,我有以下代码

public static final String TEST_BODY = "line1.\nline2.\nline3.";
//a setup method is called so that mail_cell_body_preview_field is set to above TEST_BODY
//...  

public void testMessageSnippetIsVisible() {
    onView(withId(R.id.mail_cell_body_preview_field)).check(matches(isDisplayed()));
    onView(withId(R.id.mail_cell_body_preview_field)).check(matches(hasEllipsizedText()));
    onView(withId(R.id.mail_cell_body_preview_field)).check(matches(withText(TEST_BODY)));
    //Add statement to verify that line3 not visible in UI           
}
Run Code Online (Sandbox Code Playgroud)

如何编写测试用例以验证UI中的第三行不可见?

android android-espresso

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