/*
* Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package ml.puredark.hviewer.utils;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.support.v4.app.TaskStackBuilder;
import android.support.v7.app.AppCompatActivity;
public class AppUtils {
private AppUtils() {
}
public static PackageInfo getPackageInfo(Context context) {
try {
return context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
// Should never happen.
throw new RuntimeException(e);
}
}
// From http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp .
public static void navigateUp(Activity activity, Bundle extras) {
Intent upIntent = NavUtils.getParentActivityIntent(activity);
if (upIntent != null) {
if (extras != null) {
upIntent.putExtras(extras);
}
if (NavUtils.shouldUpRecreateTask(activity, upIntent)) {
// This activity is NOT part of this app's task, so create a new task
// when navigating up, with a synthesized back stack.
TaskStackBuilder.create(activity)
// Add all of this activity's parents to the back stack.
.addNextIntentWithParentStack(upIntent)
// Navigate up to the closest parent.
.startActivities();
} else {
// This activity is part of this app's task, so simply
// navigate up to the logical parent activity.
// According to http://stackoverflow.com/a/14792752/2420519
//NavUtils.navigateUpTo(activity, upIntent);
upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
activity.startActivity(upIntent);
}
}
activity.finish();
}
public static void navigateUp(Activity activity) {
navigateUp(activity, null);
}
public static void setActionBarDisplayUp(AppCompatActivity activity) {
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}