package novoda.com.sandbox;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class DetailsActivity extends Activity {
private static final String ACTION = BuildConfig.APPLICATION_ID + ".DETAILS";
private static final String EXTRA_PACKAGE_NAME = "extra_package_name";
public static Intent createIntent(String packageName) {
return new Intent(ACTION)
.putExtra(EXTRA_PACKAGE_NAME, packageName);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
final String packageName = getIntent().getStringExtra(EXTRA_PACKAGE_NAME);
try {
ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(packageName, PackageManager.GET_META_DATA);
Drawable drawable = applicationInfo.loadIcon(getPackageManager());
ImageView logoView = (ImageView) findViewById(R.id.details_activity_application_logo);
logoView.setImageDrawable(drawable);
setItem("Name", applicationInfo.name, R.id.details_activity_application_name);
setItem("Data dir", applicationInfo.dataDir, R.id.details_activity_data_directory);
setItem("Package", applicationInfo.packageName, R.id.details_activity_package_name);
setItem("Target Sdk", String.valueOf(applicationInfo.targetSdkVersion), R.id.details_activity_target_sdk);
findViewById(R.id.details_activity_launch_application).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent launchIntentForPackage = getPackageManager().getLaunchIntentForPackage(packageName);
if (launchIntentForPackage == null) {
Toast.makeText(DetailsActivity.this, "Uh oh, can't open this package!", Toast.LENGTH_SHORT).show();
} else {
startActivity(launchIntentForPackage);
}
}
});
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
private void setItem(String keyName, String value, @IdRes int id) {
TextView name = (TextView) findViewById(id);
name.setText(keyName + " : " + value);
}
}