天天看點

Android實用代碼七段(三)

一、擷取已經安裝APK的路徑

PackageManager pm = getPackageManager();

for (ApplicationInfo app : pm.getInstalledApplications(0)) {

     Log.d("PackageList", "package: " + app.packageName + ", sourceDir: " + app.sourceDir);

}

  輸出如下:

package: com.tmobile.thememanager, sourceDir: /system/app/ThemeManager.apk

package: com.touchtype.swiftkey, sourceDir: /data/app/com.touchtype.swiftkey-1.apk

二、 多程序Preferences資料共享

    public static void putStringProcess(Context ctx, String key, String value) {

        SharedPreferences sharedPreferences = ctx.getSharedPreferences("preference_mu", Context.MODE_MULTI_PROCESS);

        Editor editor = sharedPreferences.edit();

        editor.putString(key, value);

        editor.commit();

    }

    public static String getStringProcess(Context ctx, String key, String defValue) {

        return sharedPreferences.getString(key, defValue);

    @SuppressWarnings("unchecked")

    public static <T> T[] toArray(Class<?> cls, ArrayList<T> items) {

        if (items == null || items.size() == 0) {

            return (T[]) Array.newInstance(cls, 0);

        }

        return items.toArray((T[]) Array.newInstance(cls, items.size()));

    private void saveCurrentPosition() {

        if (mListView != null) {

            int position = mListView.getFirstVisiblePosition();

            View v = mListView.getChildAt(0);

            int top = (v == null) ? 0 : v.getTop();

            //儲存position和top

    private void restorePosition() {

        if (mFolder != null && mListView != null) {

            int position = 0;//取出儲存的資料

            int top = 0;//取出儲存的資料

            mListView.setSelectionFromTop(position, top);

    public static Intent getHotspotSetting() {

        Intent intent = new Intent();

        intent.setAction(Intent.ACTION_MAIN);

        ComponentName com = new ComponentName("com.android.settings", "com.android.settings.TetherSettings");

        intent.setComponent(com);

        return intent;

    public static String getIp(Context ctx) {

        return Formatter.formatIpAddress((WifiManager) ctx.getSystemService(Context.WIFI_SERVICE).getConnectionInfo().getIpAddress());

    public static void sortFiles(File[] files) {

        Arrays.sort(files, new Comparator<File>() {

            @Override

            public int compare(File lhs, File rhs) {

                //傳回負數表示o1 小于o2,傳回0 表示o1和o2相等,傳回正數表示o1大于o2。 

                boolean l1 = lhs.isDirectory();

                boolean l2 = rhs.isDirectory();

                if (l1 && !l2)

                    return -1;

                else if (!l1 && l2)

                    return 1;

                else {

                    return lhs.getName().compareTo(rhs.getName());

                }

            }

        });