以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; }