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);
	}
     /**
     * 获取目录下所有文件
     * @param path 指定目录路径
     * @return
     */
    public static List<String> getFilesAllName(String path) {
        File file=new File(path);
        File[] files=file.listFiles();
        if (files == null){
            Log.e("error","空目录");
            return null;
        }
        List<String> s = new ArrayList<>();
        for (File value : files) {
            s.add(value.getAbsolutePath());
        }
        return s;
    }


/**
     * 判断服务是否正在运行
     * @param context 上下文对象
     * @param serviceName 服务名称(包括包名)
     * @return true则表示正在运行,false则表示没有运行
     */
    public static boolean isRunning(Context context, String serviceName) {
        // 获取Activity管理者对象
        ActivityManager mg = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
        // 获取正在运行的服务(此处设置最多取1000个)
        List<ActivityManager.RunningServiceInfo> services = mg.getRunningServices(1000);
        // 遍历,若存在名字和传入的serviceName的一致则说明存在
        for (ActivityManager.RunningServiceInfo runningServiceInfo : services) {
            if (runningServiceInfo.service.getClassName().equals(serviceName)) {
                return true;
            }
        }

        return false;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值