X-Git-Url: https://git.mdrn.pl/mobilnebezpieczenstwo.git/blobdiff_plain/4b08fd3d054a0b4872d60adc7627bfdef069c39b..be45943134f44b96728f516e91a66149e51443c0:/app/src/main/java/com/samsung/srpol/ui/AppInfoActivity.java diff --git a/app/src/main/java/com/samsung/srpol/ui/AppInfoActivity.java b/app/src/main/java/com/samsung/srpol/ui/AppInfoActivity.java new file mode 100644 index 0000000..c29ed30 --- /dev/null +++ b/app/src/main/java/com/samsung/srpol/ui/AppInfoActivity.java @@ -0,0 +1,210 @@ +/* + Copyright (C) 2014 Samsung Electronics Polska Sp. z o.o. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU AFFERO General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + You may obtain a copy of the License at + + http://www.gnu.org/licenses/agpl-3.0.txt + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +package com.samsung.srpol.ui; + +import java.util.List; + +import com.nhaarman.listviewanimations.appearance.AnimationAdapter; +import com.nhaarman.listviewanimations.appearance.simple.AlphaInAnimationAdapter; +import com.samsung.srpol.R; +import com.samsung.srpol.data.Subcategory; +import com.samsung.srpol.loader.AppDetails; +import com.samsung.srpol.loader.AppListLoader; +import com.samsung.srpol.loader.AppListLoader.OnAppRemoveListener; +import com.samsung.srpol.utils.Utils; + +import android.support.v7.app.ActionBarActivity; +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.view.Menu; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; + +public class AppInfoActivity extends ActionBarActivity implements OnAppRemoveListener { + public static final String APP_PACKAGE_NAME = "APP_PACKAGE_NAME"; + + private AppDetails mAppDetails; + private String mPackageName = null; + private ThreatsArrayAdapter mAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_app_info); + Intent intent = getIntent(); + if (intent != null) { + mPackageName = intent + .getStringExtra(AppInfoActivity.APP_PACKAGE_NAME); + } + mAppDetails = AppListLoader.getAppDetails(mPackageName); + if(mAppDetails == null){ + return; + } + ImageView imageView = (ImageView) findViewById(R.id.app_icon); + imageView.setImageDrawable(mAppDetails.getAppIcon()); + TextView textView = (TextView) findViewById(R.id.app_name); + textView.setText(mAppDetails.getAppName()); + + grayoutText(textView); + + ListView listView = (ListView) findViewById(R.id.threats_list); + mAdapter = new ThreatsArrayAdapter(getApplicationContext(), + AppListLoader.getSubcategoriesOfMask(mAppDetails + .getSubcategoriesMask())); + AnimationAdapter adapter = new AlphaInAnimationAdapter(mAdapter); + adapter.setAbsListView(listView); + listView.setAdapter(adapter); + + ImageButton uninstallButton = (ImageButton) findViewById(R.id.uninstall_button); + ImageButton moreInfoButton = (ImageButton) findViewById(R.id.more_info_button); + TextView systemAppTextView = (TextView) findViewById(R.id.system_app_text); + View activityLayout = findViewById(R.id.container); + if (mAppDetails.isSystemApp()) { + moreInfoButton.setVisibility(View.VISIBLE); + systemAppTextView.setVisibility(View.VISIBLE); + uninstallButton + .setImageResource(R.drawable.app_info_settings_button); + uninstallButton.setContentDescription(getResources().getText(R.string.app_detail_settings_button)); + activityLayout.setBackgroundResource(R.color.grayout_list_item_bg); + } else { + moreInfoButton.setVisibility(View.GONE); + systemAppTextView.setVisibility(View.GONE); + uninstallButton + .setImageResource(R.drawable.app_info_uninstall_button); + uninstallButton.setContentDescription(getResources().getText(R.string.app_detail_uninstall_button)); + activityLayout.setBackgroundResource(R.color.app_detail_bg); + } + + uninstallButton.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + Utils.showInstalledAppDetails(getApplicationContext(), mPackageName); + } + }); + moreInfoButton.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + Utils.startBrowser(getApplicationContext(), getResources().getString(R.string.app_info_more_info)); + } + }); + AppListLoader.setOnChangeListener(this); + } + + @Override + protected void onResume() { + ImageView systemAppIcon = (ImageView) findViewById(R.id.list_system_app_icon); + if (mAppDetails.isSystemApp()) { + systemAppIcon.setVisibility(View.VISIBLE); + if (mAppDetails.isEnabled()) { + systemAppIcon.setImageDrawable(Utils.getmSystemIcon(this)); + } else { + systemAppIcon.setImageDrawable(Utils + .getmSystemIconDisable(this)); + } + } else { + systemAppIcon.setVisibility(View.INVISIBLE); + } + super.onResume(); + } + + @Override + protected void onDestroy() { + AppListLoader.setOnChangeListener(null); + super.onDestroy(); + } + + class ThreatsArrayAdapter extends ArrayAdapter { + + public ThreatsArrayAdapter(Context context, List resources) { + super(context, R.layout.threats_list_item, resources); + } + + class ViewHolder { + public TextView textView; + public ImageView imageView; + } + + @Override + public boolean isEnabled(int position) { + return false; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + if (convertView == null) { + convertView = getLayoutInflater().inflate(R.layout.threats_list_item, + parent, false); + holder = new ViewHolder(); + holder.imageView = (ImageView) convertView + .findViewById(R.id.threat_icon); + holder.textView = (TextView) convertView + .findViewById(R.id.threat_text); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + Subcategory subgroupContainer = getItem(position); + if (subgroupContainer != null) { + holder.imageView + .setImageDrawable(subgroupContainer.getDarkIcon()); + holder.textView.setText(subgroupContainer.getDescription()); + } + return convertView; + } + } + + private void grayoutText(TextView textView){ + // disabling and enabling apps in system application manager is + // available since API 4.0 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + if (mAppDetails.isEnabled()) { + textView.setTextColor(getResources().getColor( + android.R.color.black)); + } else { + textView.setTextColor(getResources().getColor( + R.color.disabled_app_name)); + } + } + } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + return true; + } + + @Override + public void onPackageRemoved(String packageName) { + if (mPackageName.equals(packageName)) { + finish(); + } + } + +}