Android學習筆記--隱藏Activity2016.05

1、隱藏Activity:

PackageManager packageManager = getPackageManager();
ComponentName componentName = new ComponentName(this,MainActivity.class);
  packageManager.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);//隱藏圖標

2、獲取系統中的Service或者其他信息,context.getSystemService,根據參數獲取不同的對象

public void myTest(Context context)
 { 
     List lstRS = new ArrayList(); 
     ActivityManager acMa = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE); 
     if (acMa != null) 
     { 
         lstRS = acMa.getRunningServices(500); 
         for (int i = 0; i < lstRS.size(); i++) 
         {
             Log.i(TAG, lstRS.get(i).service.getClassName()); 
         }
     }
 }
  • 可以對getSystemService傳入不同的參數,然後再獲取不同的信息

3、SharedPreferences使用

爲了保存軟件的設置參數,Android 平臺爲我們提供了一個SharedPreferences 類,它是一個輕量級的存儲類,特別適合用於保存軟件配置參數。使用SharedPreferences保存數據,其背後是用xml文件存放數據,文件存放在/data/data//shared_prefs 目錄下。
獲取SharedPreferences對象方法:

SharedPreferences pre = Context.getSharedPreferences(String name,int mode);

對於一個app,可以在manifest.xml中找到其包名,並且使用命令:

adb pull /data/data//shared_prefs/preferences名稱.xml,可以把此xml拉到本地

4、獲取IMEI

      TelephonyManager teMa =(TelephonyManager)context.getSystemService(TELEPHONY_SERVICE);
        if (teMa != null) {
                Log.i(TAG, teMa.getDeviceId().toString());
        }

5、遍歷短信內容

        ContentResolver contentResolver = context.getContentResolver();
        Cursor cursor = contentResolver.query(Uri.parse("content://sms"), null, null, null, "date");
        Log.i(TAG, "after contentResolver"+cursor);
        while(cursor != null && cursor.moveToNext()){
            Log.i(TAG, "while...");
            String number = cursor.getString(cursor.getColumnIndex("address"));
            String name = cursor.getString(cursor.getColumnIndex("person"));
            String body = cursor.getString(cursor.getColumnIndex("body"));
            //這裏有個問題問題,就是說如果name爲null,導致Log.i調用會失敗
            //Log.i(TAG, name);
            number = number + name + body;
            if(number != null)
                Log.i(TAG, number);
        }

6、打開“設置”界面

    private void restartSetting(Context context, Intent intent){
        Intent intent2 = context.getPackageManager().getLaunchIntentForPackage("com.android.settings");
        intent2.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent2);
    }

7、刪除短信方法
遇到一個問題,刪除短信時遇到一個小問題,如下:

ContentResolver contentResolver = context.getContentResolver();
//這裏會提示報錯,不能自動識別delete函數
contentResolver.delete(Uri.parse(content://sms/100), null, null);
而下面這樣卻沒有問題......
context.getContentResolver().delete(Uri.parse("content://sms/100"), null, null);

8、把app安裝到system/app目錄
由於必須在系統目錄下,纔會有一些權限,所以需要把app安裝到目標權限
首先,手機要root,並且能對system/app目錄讀寫,即執行su命令成功,或者adb remount也可以對系統目錄讀寫
把xxx.apk拷貝到scard目錄:adb push xxx.apk /scard/
修改權限,一定要修改爲可執行權限:chmod 777 /scard/xxx.apk
cp /scard/xxx.apk /system/app/xxx.apk
重新啓動手機,即可實現安裝到系統目錄
此外,存在system/app下的apk,除了重啓外,還有一個pm命令

pm install xxx.apk
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章