反射

10 篇文章 0 订阅

反射: http://www.cnblogs.com/Quincy/archive/2011/06/19/2084557.html

用例:当APK里面用到了3.0后新增的API, 在2.X环境下编译不通过。
当调用高版本API时用反射可以解决此问题。

public class IVersionDrmApdater implements DrmManagerAdapter
{
	private Class<?> drmClass;

	private Object mDrmInstance;

	private static final String CLAZZ_NAME = "android.drm.DrmManagerClient";
	
	public IVersionDrmApdater(Context c)
	{
		mContext = c;
		try
		{
			drmClass = Class.forName(CLAZZ_NAME);
			@SuppressWarnings("unchecked")
			Constructor<Object> constructor = (Constructor<Object>) drmClass.getConstructor(Context.class);
			constructor.setAccessible(true);
			mDrmInstance = constructor.newInstance(mContext);
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	private int checkRightsStatus(String path, int action)
	{
		try
		{
			Method m = drmClass.getMethod("checkRightsStatus", String.class, int.class);
			m.setAccessible(true);
			return ((Integer) m.invoke(mDrmInstance, path, action)).intValue();
		} catch (Exception e)
		{
			e.printStackTrace();
			return DrmStore.Action.DEFAULT;
		}
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值