/*
********************************************************************************
* Copyright (c) 2012 Samsung Electronics, Inc.
* All rights reserved.
*
* This software is a confidential and proprietary information of Samsung
* Electronics, Inc. ("Confidential Information"). You shall not disclose such
* Confidential Information and shall use it only in accordance with the terms
* of the license agreement you entered into with Samsung Electronics.
********************************************************************************
*/
package com.sprc.circlelauncher;
import android.app.Activity;
import android.app.Fragment;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* A {@link Fragment} showing detailed application info.
*
* @author sprc
*
*/
public class AppDetailsFragment extends Fragment {
private ResolveInfo mResolveInfo;
private PackageInfo mPackageInfo;
private PackageManager mPackageManager;
public static AppDetailsFragment newInstance(ResolveInfo resolveInfo) {
AppDetailsFragment f = new AppDetailsFragment();
f.setResolveInfo(resolveInfo);
return f;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mPackageManager = activity.getPackageManager();
if (mPackageInfo == null) {
try {
mPackageInfo = mPackageManager.getPackageInfo(mResolveInfo.activityInfo.packageName, 0);
} catch (NameNotFoundException e) {
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_appdetails, container, false);
TextView title = (TextView) v.findViewById(R.id.text_title);
title.setText(mResolveInfo.loadLabel(mPackageManager));
// Set package name
ViewGroup item = (ViewGroup) v.findViewById(R.id.item_package_name);
TextView label = ((TextView) item.findViewById(R.id.label));
label.setText(R.string.label_package_name);
TextView text = ((TextView) item.findViewById(R.id.text));
text.setText(mResolveInfo.activityInfo.packageName);
// Set version name
item = (ViewGroup) v.findViewById(R.id.item_version_name);
if (mPackageInfo != null && isVersionNameValid(mPackageInfo.versionName)) {
label = ((TextView) item.findViewById(R.id.label));
label.setText(R.string.label_version_name);
text = ((TextView) item.findViewById(R.id.text));
text.setText(mPackageInfo.versionName);
} else {
item.setVisibility(View.GONE);
}
// Set version code
item = (ViewGroup) v.findViewById(R.id.item_version_code);
if (mPackageInfo != null && isVersionCodeValid(mPackageInfo.versionCode)) {
label = ((TextView) item.findViewById(R.id.label));
label.setText(R.string.label_version_code);
text = ((TextView) item.findViewById(R.id.text));
text.setText(Integer.toString(mPackageInfo.versionCode));
} else {
item.setVisibility(View.GONE);
}
// Set SDK version
item = (ViewGroup) v.findViewById(R.id.item_target_sdk_version);
if (isSdkVersionValid(mResolveInfo.activityInfo.applicationInfo.targetSdkVersion)) {
label = ((TextView) item.findViewById(R.id.label));
label.setText(R.string.label_target_sdk_version);
text = ((TextView) item.findViewById(R.id.text));
text.setText(Integer.toString(mResolveInfo.activityInfo.applicationInfo.targetSdkVersion));
} else {
item.setVisibility(View.GONE);
}
// Set UID
item = (ViewGroup) v.findViewById(R.id.item_uid);
label = ((TextView) item.findViewById(R.id.label));
label.setText(R.string.label_uid);
text = ((TextView) item.findViewById(R.id.text));
text.setText(Integer.toString(mResolveInfo.activityInfo.applicationInfo.uid));
return v;
}
public void setResolveInfo(ResolveInfo resolveInfo) {
mResolveInfo = resolveInfo;
}
public ResolveInfo getResolveInfo() {
return mResolveInfo;
}
private static boolean isSdkVersionValid(int targetSdkVersion) {
return targetSdkVersion > 0;
}
private static boolean isVersionNameValid(String name) {
return name != null;
}
private static boolean isVersionCodeValid(int code) {
return code > 0;
}
}