Android 工具類筆記

工具類筆記,以便日後使用

 

    //發送按鍵
    public static class SendKeyDownThread extends Thread {
        private int keyCode = KeyEvent.KEYCODE_UNKNOWN;
        public SendKeyDownThread(int keyCode) {
            this.keyCode = keyCode;
        }
        @Override
        public void run() {
            super.run();
            Instrumentation instrumentation = new Instrumentation();
            instrumentation.sendKeyDownUpSync(keyCode);
        }
    }
    //啓動APP
    public static void startApp(Context context, String packName) {
        Intent intent = context.getPackageManager().getLaunchIntentForPackage(packName);
        try {
            if (intent.resolveActivity(context.getPackageManager()) != null) {
                context.startActivity(intent);
            }
        }
        catch (ActivityNotFoundException ignored) {
        }
    }
    //檢測APK是否安裝
    public static boolean isApkInstalled(Context context, String packageName) {
        boolean installed = false;
        PackageInfo packageInfo = null;
        try {
            packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
            installed = true;
        } catch (PackageManager.NameNotFoundException e) {
            installed = false;
        }
        return installed;
    }

	//字節數組轉Drawable
	public static synchronized Drawable byteToDrawable(byte[] img) {
        Bitmap bitmap;
        if (img != null) {
            bitmap = BitmapFactory.decodeByteArray(img,0, img.length);
            Drawable drawable = new BitmapDrawable(bitmap);
            return drawable;
        }
        return null;

    }
    //drawable轉字節數組
    public static  synchronized  byte[] drawableToByte(Drawable drawable) {

        if (drawable != null) {
            Bitmap bitmap = Bitmap.createBitmap(
                drawable.getIntrinsicWidth(),
                drawable.getIntrinsicHeight(),
                drawable.getOpacity() != PixelFormat.OPAQUE ?     
            Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565);
            Canvas canvas = new Canvas(bitmap);
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
                    drawable.getIntrinsicHeight());
            drawable.draw(canvas);
            int size = bitmap.getWidth() * bitmap.getHeight() * 4;
            ByteArrayOutputStream baos = new ByteArrayOutputStream(size);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
            byte[] imagedata = baos.toByteArray();
            return imagedata;
        }
        return null;
    }
    //通過包名獲取應用圖標
    public static Drawable getAppIconByPackageName(Context context, String packName) {
		PackageManager pm = context.getPackageManager();
		try {
			ApplicationInfo info = pm.getApplicationInfo(packName, 0);
			return info.loadIcon(pm);
		} catch (PackageManager.NameNotFoundException e) {
			//e.printStackTrace();
		}
		return context.getResources().getDrawable(R.drawable.selector_customize);
	}
    //通過包名獲取應用名稱
	public static String getAppNameByPackageName(Context context, String packName) {
		PackageManager pm = context.getPackageManager();
		try {
			ApplicationInfo info = pm.getApplicationInfo(packName, 0);
			return info.loadLabel(pm).toString();
		} catch (PackageManager.NameNotFoundException e) {
			//e.printStackTrace();
		}
		return context.getResources().getString(R.string.str_app_customize);
	}

 

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