1. 程式人生 > >android 通過反射機制例項化靜態內部類

android 通過反射機制例項化靜態內部類

以android通知為例:

獲取Notification.Builder,其中Builder為Notification的靜態內部類,鑑於Android 8.0通知的新特性,在new一個Builder的時候需要傳參ChannalId,所以需要適配低版本,

public static Notification.Builder getNotificationBuilder(Context context) {
    Notification.Builder builder = null;
    if (Build.VERSION.SDK_INT >= ToucConstants.VERSION_CODES_O) {
        builder = (Notification.Builder) getObjectFromInnerClass("android.app.Notification$Builder"
, context); } else { builder = new Notification.Builder(context); } return builder; } public static Object getObjectFromInnerClass(String clsName, Context context) { Object obj = null; try { Class c = Class.forName(clsName); if (c != null) { Constructor constructor = c.getDeclaredConstructor(new
Class[]{Context.class, String.class}); if (constructor != null) { obj = constructor.newInstance(context, id); } } } catch (Exception e) { e.printStackTrace(); } return obj; }