是否可以禁用片段中的屏幕捕获?我知道以下适用于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)
有任何想法吗?
提前致谢
我正在尝试将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) 我有一个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中的第三行不可见?