Skip to content

Instantly share code, notes, and snippets.

@panpf
panpf / gist:012621a716028d9d1142
Last active August 29, 2015 14:15
Android解析APK文件(Android parse APK file from SD Card)
public void parseApk(Context context, String apkFilePath){
    PackageManager packageManager = context.getPackageManager();
    PackageInfo packageInfo = packageManager.getPackageArchiveInfo(apkFilePath, 0);
    if(packageInfo != null){
        packageInfo.applicationInfo.sourceDir = apkFilePath;
        packageInfo.applicationInfo.publicSourceDir = apkFilePath;
        String name = packageInfo.applicationInfo.loadLabel(packageManager).toString();
        String packageName = packageInfo.packageName;
 String versionName = packageInfo.versionName;
@panpf
panpf / BatchConfiguration.java批量配置文件解析器
Last active March 5, 2022 11:24
一种通过ZIP备注实现APK多渠道的方法
import java.io.*;
import java.util.LinkedList;
import java.util.List;
public class BatchConfiguration {
public int version = -1;
public List<MCPComment> commentList;
private BatchConfiguration() {
@panpf
panpf / ChannelApkGenerator.java
Created June 24, 2016 06:33
一种通过往META-INF目录下添加特殊名称的文件实现多渠道APK的方法
import java.io.*;
import java.net.URI;
import java.nio.file.FileSystem;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
public class ChannelApkGenerator {
@panpf
panpf / JsonFormatter.java
Created July 22, 2016 05:01
一个简单的JSON字符串格式化工具
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Iterator;
/**
* 一个简单的JSON字符串格式化工具
*/
public class JsonFormatter {
@panpf
panpf / FragmentAssist.java
Created July 26, 2016 05:34
协助访问Fragment中的一些私有属性,这个类必须在android.support.v4.app包下
package android.support.v4.app;
import android.app.Activity;
public class FragmentAssist {
public static Activity getActivity(FragmentManager fragmentManager) {
if (fragmentManager instanceof FragmentManagerImpl) {
return ((FragmentManagerImpl) fragmentManager).mActivity;
} else {
return null;
@panpf
panpf / PagerPeepAnimation.java
Created October 12, 2016 08:17
偷看ViewPager下一页动画
/**
* 偷看ViewPager下一页动画
*/
public class PagerPeepAnimation extends Animation {
private ViewPager viewPager;
private AnimationListener wrapperAnimationListener;
private int peepWidth;
public PagerPeepAnimation(final ViewPager viewPager) {
@panpf
panpf / gist:5444871ffdb7f2a7cd9d26d27ea37df9
Created December 13, 2016 10:18
创建一个可以改变颜色的ColorFilter
/**
* 创建一个可以改变颜色的ColorFilter
* @param color 透明度是没有用的
* @return ColorMatrixColorFilter
*/
public static ColorMatrixColorFilter makeResetColorFilter(int color){
float mRed = Color.red(color);
float mGreen = Color.green(color);
@panpf
panpf / FileUtils.java
Last active July 19, 2017 10:23
循环删除或清空目录
/**
* 循环删除目录
*/
public static boolean delete(File file) {
if (file == null || !file.exists()) {
return false;
}
if (file.isFile()) {
return file.delete();
@panpf
panpf / JsonUtils.java
Created July 20, 2017 03:20
解析Json工具类
package com.yingyonghui.market.util;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonSyntaxException;
import com.yingyonghui.market.net.SafeJsonArray;
import com.yingyonghui.market.net.SafeJsonObject;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.lang.reflect.Type;
@panpf
panpf / RSAHelper.java
Last active September 29, 2017 03:33
RSA 加密、解密、生成 KEY、签名、验证
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Base64;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;