package org.bbs.apklauncher.emb;
import org.bbs.apklauncher.AndroidUtil;
import org.bbs.apklauncher.TargetContext;
import android.annotation.TargetApi;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
/**
*
* provide consistent interface with {@link PendingIntent}
* @author bysong
*
*/
public class PendingIntentHelper
// extends PendingIntent
{
private static final String TAG = PendingIntentHelper.class.getSimpleName();
private static final String COOKIE = TAG;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static PendingIntent getActivities(Context context, int requestCode, Intent[] intents, int flags) {
Context injectContext = parseContext(context);
return PendingIntent.getActivities(injectContext, requestCode, intents, flags);
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static PendingIntent getActivities(Context context, int requestCode, Intent[] intents, int flags, Bundle options){
Context injectContext = parseContext(context);
return PendingIntent.getActivities(injectContext, requestCode, intents, flags, options);
}
public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags) {
Context injectContext = parseContext(context);
return PendingIntent.getActivity(injectContext, requestCode, intent, flags);
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags, Bundle options){
Context injectContext = parseContext(context);
return PendingIntent.getActivity(injectContext, requestCode, intent, flags, options);
}
public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags){
Context injectContext = parseContext(context);
return PendingIntent.getBroadcast(injectContext, requestCode, intent, flags);
}
public static PendingIntent getService(Context context, int requestCode, Intent intent, int flags) {
Context injectContext = parseContext(context);
return PendingIntent.getService(injectContext, requestCode, intent, flags);
}
static Context parseContext(Context context){
Context c = null;
if (context instanceof TargetContext
&& !COOKIE.equals(((TargetContext) c).getCookie())) {
c = context;
} else {
TargetContext t = new TargetContext(context);
t.setCookie(COOKIE);
t.packageNameReady(AndroidUtil.getContextImpl(context).getPackageName());
c = t;
}
return c;
}
// public static PendingIntent readPendingIntentOrNullFromParcel(Parcel in) {
// return PendingIntent.readPendingIntentOrNullFromParcel(in);
// }
}