我有一个Android应用程序,用户可以在其中输入任何xml源URL进行解析.然后我的应用程序解析xml(如果有效)并显示结果.
问题是,如果用户输入不受信任的xml源URL,则可能会影响应用和/或设备.
什么是识别风险,防止利用最佳途径.
通过我的研究,我发现启用FEATURE_SECURE_PROCESSING并禁用扩展可能会有所帮助.但任何人都可以告诉我它是什么,我如何实现它.
谢谢.
我通常会创建一个自定义视图,例如
public class MyView extends LinearLayout{
public MyView(Context context){
super(context);
//Inflating my custom layout
LayoutInflater inflater = getLayoutInflater();
inflater.inflate(R.layout.view_layout, this);
}
}
Run Code Online (Sandbox Code Playgroud)
上面布局的问题是,它将在其中创建一个新的LinearLayout并膨胀R.layout.view_layout,添加一个新的视图层次结构,这是不受欢迎的。
R.layout.view_layout包含RelativeLayout许多子元素,我无法通过扩展对其进行编程添加RelativeLayout(因为定位很困难)。
不必要的层次结构会使我的应用程序变慢。
custom views/view group没有额外的层次结构级别的最佳创建方法是什么。
根据CommonsWare的解决方案:
XML布局:
<merge>
<TextView ...
.../>
More items
</merge>
Run Code Online (Sandbox Code Playgroud)
由于XML布局具有RelativeLayout父视图,因此我将RelativeLayout在代码中扩展而不是LinearLayout
public class MyView extends RelativeLayout{
public MyView(Context context){
super(context);
//Inflating my custom layout
LayoutInflater inflater = getLayoutInflater();
inflater.inflate(R.layout.view_layout, this);
}
}
Run Code Online (Sandbox Code Playgroud) 我将图像放在drawable-xhdpi文件夹中,而galaxy nexus不会把它拿起来.
是galaxy nexus HDPI还是XHDPI?
我已经了解到java中的接口和抽象类可以帮助我们实现抽象.但是,我并不完全理解这个理论,抽象意味着隐藏内部机制并仅显示相关细节,但是接口和抽象类究竟如何帮助我们.
有人可以用现实生活中的例子来解释我.
我正在通过adb命令运行构建,
adb install myapp.apk
Run Code Online (Sandbox Code Playgroud)
在控制台中,我收到消息,执行流式安装
这是什么意思。
我想将相同的视图添加到之前添加到另一个的新RelativeLayout.
RelativeLayout1
-- View1
-- ScrollView
-- Linear Layout2
Run Code Online (Sandbox Code Playgroud)
我有一个视图添加到线性layout2,它被添加到scrollview.我想将相同的子视图添加到View1的RelativeLayout1.
我这样添加视图,
MyCustomScrollView scrollView = new MyCustomScrollView(context);
layout2 = new LinearLayout(context);
for(int i=0;i<10;i++)
layout2.addView(list.get(i));
scrollView,add(layout2);
relativeLayout1.addView(scrollView);
Run Code Online (Sandbox Code Playgroud)
现在我想在View1的位置将相同的视图从列表添加到RelativeLayout1
RelativeLayout1.remove(view1);
RelativeLayout1.addView(list.get(0),0);
Causes
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:2062)
at android.view.ViewGroup.addView(ViewGroup.java:1957)
at android.view.ViewGroup.addView(ViewGroup.java:1914)
Run Code Online (Sandbox Code Playgroud)