X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fandroid%2Fappmgr%2Fsrc%2Forg%2Fanbox%2Fappmgr%2FAppModel.java;fp=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fandroid%2Fappmgr%2Fsrc%2Forg%2Fanbox%2Fappmgr%2FAppModel.java;h=cc4896b171cda82b15f58242564bdf5df733b825;hb=e26c1ec581be598521517829adba8c8dd23a768f;hp=0000000000000000000000000000000000000000;hpb=6699c1aea74eeb0eb400e6299079f0c7576f716f;p=iec.git diff --git a/src/type3_AndroidCloud/anbox-master/android/appmgr/src/org/anbox/appmgr/AppModel.java b/src/type3_AndroidCloud/anbox-master/android/appmgr/src/org/anbox/appmgr/AppModel.java new file mode 100644 index 0000000..cc4896b --- /dev/null +++ b/src/type3_AndroidCloud/anbox-master/android/appmgr/src/org/anbox/appmgr/AppModel.java @@ -0,0 +1,101 @@ +/* + * The MIT License (MIT) + * + * Copyright 2016 Arnab Chakraborty. http://arnab.ch + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal in the Software + * without restriction, including without limitation the rights to use, copy, modify, + * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies + * or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.anbox.appmgr; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.graphics.drawable.Drawable; + +import java.io.File; + +/** + * @credit http://developer.android.com/reference/android/content/AsyncTaskLoader.html + */ +public class AppModel { + + private final Context mContext; + private final ApplicationInfo mInfo; + + private String mAppLabel; + private Drawable mIcon; + + private boolean mMounted; + private final File mApkFile; + + public AppModel(Context context, ApplicationInfo info) { + mContext = context; + mInfo = info; + + mApkFile = new File(info.sourceDir); + } + + public ApplicationInfo getAppInfo() { + return mInfo; + } + + public String getApplicationPackageName() { + return getAppInfo().packageName; + } + + public String getLabel() { + return mAppLabel; + } + + public Drawable getIcon() { + if (mIcon == null) { + if (mApkFile.exists()) { + mIcon = mInfo.loadIcon(mContext.getPackageManager()); + return mIcon; + } else { + mMounted = false; + } + } else if (!mMounted) { + // If the app wasn't mounted but is now mounted, reload + // its icon. + if (mApkFile.exists()) { + mMounted = true; + mIcon = mInfo.loadIcon(mContext.getPackageManager()); + return mIcon; + } + } else { + return mIcon; + } + + return mContext.getResources().getDrawable(android.R.drawable.sym_def_app_icon); + } + + + void loadLabel(Context context) { + if (mAppLabel == null || !mMounted) { + if (!mApkFile.exists()) { + mMounted = false; + mAppLabel = mInfo.packageName; + } else { + mMounted = true; + CharSequence label = mInfo.loadLabel(context.getPackageManager()); + mAppLabel = label != null ? label.toString() : mInfo.packageName; + } + } + } +}