android myclass
2015-06-17 16:52
211 查看
package com.example.myreflect.util; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class MyClass { private Class<?> class1; private Method method1; private MyClass(Class<?> class1,String name, Class<?>... parameterTypes) throws NoSuchMethodException { super(); this.class1 = class1; this.method1=class1.getMethod(name, parameterTypes); } public static MyClass build(String className,String name, Class<?>... parameterTypes) throws ClassNotFoundException, NoSuchMethodException { return new MyClass(className, name, parameterTypes); } public static MyClass build(Class<?> class1,String name, Class<?>... parameterTypes) throws ClassNotFoundException, NoSuchMethodException { return new MyClass(class1, name, parameterTypes); } private MyClass(String className,String name, Class<?>... parameterTypes) throws ClassNotFoundException, NoSuchMethodException { super(); this.class1 = forName(className); this.method1=class1.getMethod(name, parameterTypes); } public Class<?> getClass1() { return class1; } public void setClass1(Class<?> class1) { this.class1 = class1; } public Method getMethod1() { return method1; } public void setMethod1(Method method1) { this.method1 = method1; } public static Class<?> forName(String className) throws ClassNotFoundException { return Class.forName(className); } public Object invoke(Object receiver, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { return method1.invoke(receiver, args); } /* private void test() throws Exception { Class<?> class001 = Class.forName(""); Method method001 = class001.getMethod("", new Class[] {}); method001.invoke(null, new Object[] {}); } private void test2() throws Exception { //Log.i(tag, msg) MyClass class1=new MyClass("android.util.Log", "i", new Class[] {String.class,String.class}); class1.invoke(class1.getClass1(), "tag","ok"); } */ }
package com.example.myreflect; import com.example.myreflect.util.MyClass; import android.app.Activity; import android.os.Bundle; import android.telephony.TelephonyManager; import android.util.Log; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void logstatic(View view) { try { MyClass class1 = MyClass.build("android.util.Log", "i", new Class[] { String.class, String.class }); class1.invoke(class1.getClass1(), "tag", "ok"); } catch (Exception e) { e.printStackTrace(); } } public void log(View view) { try { TelephonyManager telephonyManager = (TelephonyManager) getSystemService( Activity.TELEPHONY_SERVICE); // telephonyManager.getDeviceId(); MyClass class1 = MyClass.build( "android.telephony.TelephonyManager", "getDeviceId", new Class[] {}); String result = (String) class1.invoke(telephonyManager); Log.i("xx", result); Log.i("fuck",(String) MyClass.build("android.telephony.TelephonyManager", "getDeviceId", new Class[] {}).invoke(telephonyManager)); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- android开发环境搭建
- androidstudio使用指南(持续更新)
- Android5.0最新特性一览,看看有没有你需要的
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- Android基础知识_Activity生命周期
- WP8.1 VS iOS VS Android全方面大比拼
- Android开源项目分类汇总
- (译)Android高效加载大图、多图解决方案,有效避免程序OOM
- IntelliJ IDEA /Android Studio显示文档
- 关于android manager 不能更新的问题
- 深入Android SQLite 事务处理详解
- IntelliJ IDEA/ Android Studio 显示行号方法
- Android中SQLite数据库的简单使用
- Android学习笔记——Handler(一)
- Android Screen on/off flow
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- Json解析速度比较-Android API、Gson、Fastjson
- Android_Json_FastJson数据解析
- Android listView 隔行变色+按下变色
- android软键盘把页面顶上去