get Move Type from PackageInfo - Android android.content.pm

Android examples for android.content.pm:PackageManager

Description

get Move Type from PackageInfo

Demo Code


//package com.java2s;

import java.lang.reflect.Field;

import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;

public class Main {
    public static final int MOVEAPPTYPE_MOVETOSDCARD = 1;
    public static final int MOVEAPPTYPE_MOVETOPHONE = 2;
    public static final int MOVEAPPTYPE_NONE = 3;
    public static final int FLAG_EXTERNAL_STORAGE = 1 << 18;

    public static int getMoveType(PackageInfo pInfo, ApplicationInfo info) {
        int moveType = MOVEAPPTYPE_NONE;
        if ((FLAG_EXTERNAL_STORAGE & info.flags) != 0) {
            moveType = MOVEAPPTYPE_MOVETOPHONE;
        } else if (pInfo != null) {
            int installLocation = 1;
            try {
                Field field = pInfo.getClass().getDeclaredField(
                        "installLocation");
                field.setAccessible(true);
                installLocation = field.getInt(pInfo);
            } catch (SecurityException e) {
                e.printStackTrace();//  w  w w .  ja va2s. c  o  m
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
            if (installLocation == 0) {
                moveType = MOVEAPPTYPE_MOVETOSDCARD;
            } else if (installLocation == -1 || installLocation == 1) {
                moveType = MOVEAPPTYPE_NONE;
            }
        }
        return moveType;
    }
}

Related Tutorials