/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.support.v4.media; import android.annotation.TargetApi; import android.media.browse.MediaBrowser; import android.support.annotation.RequiresApi; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.List; /** * An adapter class for accessing the hidden framework classes, ParceledListSlice using reflection. */ @RequiresApi(21) @TargetApi(21) class ParceledListSliceAdapterApi21 { private static Constructor sConstructor; static { try { Class theClass = Class.forName("android.content.pm.ParceledListSlice"); sConstructor = theClass.getConstructor(new Class[] { List.class }); } catch (ClassNotFoundException | NoSuchMethodException e) { e.printStackTrace(); } } static Object newInstance(List<MediaBrowser.MediaItem> itemList) { Object result = null; try { result = sConstructor.newInstance(itemList); } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } return result; } }