便好奇 app store 上的軟體為何可以偵測出應用程式是否為間諜
我猜, 無非就是例出所有已安裝的應用程式 package,
並查出它們的使用到了那些權限 (Permissions)
再交由使用者決定是否要砍殺這個 package
其中應可以再列出 service 來判斷是否為間諜
- 一、列出已安裝軟體
chris 示範了如何列出已安裝軟體, 利用 PackageManager().getInstalledPackages() 來完成. 其中還可分別是否為系統 package.
boolean issys = (p.applicationInfo.flags & p.applicationInfo.FLAG_SYSTEM) > 0;
- 二、Layout
scrollView1 (ScrollView 下只可以有一個 child view)
linearLayout1 (垂直)
linearLayout (水平 , 程式動態加入)
ImageView (應用程式圖片, 程式動態加入)
TextView (應用程式名, 程式動態加入)
- 三、程式
- ScrollView 下只可以有一個 child view.
- Fragment 在 onStart 時, 加入程式動態加入的元件
@Override
public void onStart ()
{
super.onStart();
Log.v("app", "PlaceholderFragment::onStart");
Log.v("app", "getView():" +getView());
//TextView tv = (TextView)getView().findViewById(R.id.textView2);
//Log.v("app", "textview :" + tv);
ArrayList<PInfo> apps = ArcAndroidTool.getPackages(this.getActivity(), true);
//linearLayout1.
LinearLayout ll1 = (LinearLayout)getView().findViewById(R.id.linearLayout1);
Log.v("app", "LinearLayout1 :" + ll1);
final int max = apps.size();
for (int i=0; i<max; i++)
{
//linearlayout.
LinearLayout ll = new LinearLayout(getActivity());
//icon.
ImageView iv = new ImageView(getActivity());
iv.setImageDrawable(apps.get(i).icon);
ll.addView(iv);
//package name.
TextView tv = new TextView(getActivity());
tv.setText(apps.get(i).appname);
ll.addView(tv);
//水平.
ll1.addView(ll, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}
}
沒有留言:
張貼留言