本文整理汇总了Java中android.content.pm.ActivityInfo.loadIcon方法的典型用法代码示例。如果您正苦于以下问题:Java ActivityInfo.loadIcon方法的具体用法?Java ActivityInfo.loadIcon怎么用?Java ActivityInfo.loadIcon使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类android.content.pm.ActivityInfo
的用法示例。
在下文中一共展示了ActivityInfo.loadIcon方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getApplicationInfo
import android.content.pm.ActivityInfo; //导入方法依赖的package包/类
private static ApplicationInfo getApplicationInfo(PackageManager manager, Intent intent) {
final ResolveInfo resolveInfo = manager.resolveActivity(intent, 0);
if (resolveInfo == null) {
return null;
}
final ApplicationInfo info = new ApplicationInfo();
final ActivityInfo activityInfo = resolveInfo.activityInfo;
info.icon = activityInfo.loadIcon(manager);
if (info.title == null || info.title.length() == 0) {
info.title = activityInfo.loadLabel(manager);
}
if (info.title == null) {
info.title = "";
}
return info;
}
示例2: fixTaskDescription
import android.content.pm.ActivityInfo; //导入方法依赖的package包/类
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void fixTaskDescription(Activity activity, ActivityInfo targetInfo) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
PackageManager pm = mHostContext.getPackageManager();
String lablel = String.valueOf(targetInfo.loadLabel(pm));
Drawable icon = targetInfo.loadIcon(pm);
Bitmap bitmap = null;
if (icon instanceof BitmapDrawable) {
bitmap = ((BitmapDrawable) icon).getBitmap();
}
if (bitmap != null) {
activity.setTaskDescription(new android.app.ActivityManager.TaskDescription(lablel, bitmap));
} else {
activity.setTaskDescription(new android.app.ActivityManager.TaskDescription(lablel));
}
}
} catch (Throwable e) {
Log.w(TAG, "fixTaskDescription fail", e);
}
}
示例3: doInBackground
import android.content.pm.ActivityInfo; //导入方法依赖的package包/类
@Override
protected Void doInBackground(DonateActivity.DonateItem... params) {
Context context = mReference.get();
if (context != null) {
PackageManager packageManager = context.getPackageManager();
for (DonateActivity.DonateItem item : params) {
ActivityInfo ai = packageManager.resolveActivity(item.intent, 0).activityInfo;
item.label = ai.loadLabel(packageManager);
item.icon = ai.loadIcon(packageManager);
this.publishProgress(item);
}
}
return null;
}
示例4: getAppInfoFromValue
import android.content.pm.ActivityInfo; //导入方法依赖的package包/类
private AppInfo getAppInfoFromValue(String value) {
AppInfo appInfo = new AppInfo();
if (value == null) return appInfo;
try {
Intent intent = Intent.parseUri(value, 0);
int iconResId = intent.getStringExtra("iconResName") != null ?
mResources.getIdentifier(intent.getStringExtra("iconResName"),
"drawable", mContext.getPackageName()) : 0;
if (iconResId != 0) {
appInfo.icon = mResources.getDrawable(iconResId);
} else if (intent.hasExtra("icon")) {
final String appIconPath = intent.getStringExtra("icon");
if (appIconPath != null) {
File f = new File(appIconPath);
if (f.exists() && f.canRead()) {
FileInputStream fis = new FileInputStream(f);
appInfo.icon = new BitmapDrawable(mResources, BitmapFactory.decodeStream(fis));
fis.close();
}
}
}
int mode = intent.getIntExtra("mode", MODE_APP);
if (mode == MODE_APP) {
ComponentName cn = intent.getComponent();
ActivityInfo ai = mPackageManager.getActivityInfo(cn, 0);
appInfo.name = (ai.loadLabel(mPackageManager).toString());
if (appInfo.icon == null) {
appInfo.icon = ai.loadIcon(mPackageManager);
}
} else if (mode == MODE_SHORTCUT) {
appInfo.name = intent.getStringExtra("prefLabel");
}
return appInfo;
} catch (Exception e) {
e.printStackTrace();
return appInfo;
}
}
示例5: reloadButtons
import android.content.pm.ActivityInfo; //导入方法依赖的package包/类
/**
* 核心方法,加载最近启动的应用程序 注意:这里我们取出的最近任务为 MAX_RECENT_TASKS +
* 1个,因为有可能最近任务中包好Launcher2。 这样可以保证我们展示出来的 最近任务 为 MAX_RECENT_TASKS 个
* 通过以下步骤,可以获得近期任务列表,并将其存放在了appInfos这个list中,接下来就是展示这个list的工作了。
*/
public static List<HashMap<String, Object>> reloadButtons(Context context, int appNumber) {
List<HashMap<String, Object>> appInfos = new ArrayList<>();
int MAX_RECENT_TASKS = appNumber; // allow for some discards
int repeatCount = appNumber;// 保证上面两个值相等,设定存放的程序个数
/* 每次加载必须清空list中的内容 */
appInfos.removeAll(appInfos);
// 得到包管理器和activity管理器
final PackageManager pm = context.getPackageManager();
final ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
// 从ActivityManager中取出用户最近launch过的 MAX_RECENT_TASKS + 1 个,以从早到晚的时间排序,
// 注意这个 0x0002,它的值在launcher中是用ActivityManager.RECENT_IGNORE_UNAVAILABLE
// 但是这是一个隐藏域,因此我把它的值直接拷贝到这里
try {
final List<ActivityManager.RecentTaskInfo> recentTasks = am
.getRecentTasks(MAX_RECENT_TASKS + 1, 0x0002);
// 这个activity的信息是我们的launcher
ActivityInfo homeInfo = new Intent(Intent.ACTION_MAIN).addCategory(
Intent.CATEGORY_HOME).resolveActivityInfo(pm, 0);
int numTasks = recentTasks.size();
for (int i = 0; i < numTasks && (i < MAX_RECENT_TASKS); i++) {
HashMap<String, Object> singleAppInfo = new HashMap<String, Object>();// 当个启动过的应用程序的信息
final ActivityManager.RecentTaskInfo info = recentTasks.get(i);
Intent intent = new Intent(info.baseIntent);
if (info.origActivity != null) {
intent.setComponent(info.origActivity);
}
/**
* 如果找到是launcher,直接continue,后面的appInfos.add操作就不会发生了
*/
if (homeInfo != null) {
if (homeInfo.packageName.equals(intent.getComponent()
.getPackageName())
&& homeInfo.name.equals(intent.getComponent()
.getClassName())) {
MAX_RECENT_TASKS = MAX_RECENT_TASKS + 1;
continue;
}
}
// 设置intent的启动方式为 创建新task()【并不一定会创建】
intent.setFlags((intent.getFlags() & ~Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
| Intent.FLAG_ACTIVITY_NEW_TASK);
// 获取指定应用程序activity的信息(按我的理解是:某一个应用程序的最后一个在前台出现过的activity。)
final ResolveInfo resolveInfo = pm.resolveActivity(intent, 0);
if (resolveInfo != null) {
final ActivityInfo activityInfo = resolveInfo.activityInfo;
final String title = activityInfo.loadLabel(pm).toString();
final int uid = activityInfo.applicationInfo.uid;
Drawable icon = activityInfo.loadIcon(pm);
if (title != null && title.length() > 0 && icon != null) {
singleAppInfo.put("title", title);
singleAppInfo.put("icon", icon);
singleAppInfo.put("tag", intent);
singleAppInfo.put("uid", uid);
singleAppInfo.put("packageName", activityInfo.packageName);
appInfos.add(singleAppInfo);
}
}
}
return appInfos;
} catch (Exception e) {
e.printStackTrace();
Log.d("mmm", e.getMessage());
return null;
}
}
示例6: reloadButtons
import android.content.pm.ActivityInfo; //导入方法依赖的package包/类
/**
* 核心方法,加载最近启动的应用程序 注意:这里我们取出的最近任务为 MAX_RECENT_TASKS +
* 1个,因为有可能最近任务中包好Launcher2。 这样可以保证我们展示出来的 最近任务 为 MAX_RECENT_TASKS 个
* 通过以下步骤,可以获得近期任务列表,并将其存放在了appInfos这个list中,接下来就是展示这个list的工作了。
*/
public static void reloadButtons(Activity activity, List<HashMap<String, Object>> appInfos, int appNumber) {
int MAX_RECENT_TASKS = appNumber; // allow for some discards
int repeatCount = appNumber;// 保证上面两个值相等,设定存放的程序个数
/* 每次加载必须清空list中的内容 */
appInfos.removeAll(appInfos);
// 得到包管理器和activity管理器
final Context context = activity.getApplication();
final PackageManager pm = context.getPackageManager();
final ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
// 从ActivityManager中取出用户最近launch过的 MAX_RECENT_TASKS + 1 个,以从早到晚的时间排序,
// 注意这个 0x0002,它的值在launcher中是用ActivityManager.RECENT_IGNORE_UNAVAILABLE
// 但是这是一个隐藏域,因此我把它的值直接拷贝到这里
try {
final List<ActivityManager.RecentTaskInfo> recentTasks = am
.getRecentTasks(MAX_RECENT_TASKS + 1, 0x0002);
// 这个activity的信息是我们的launcher
ActivityInfo homeInfo = new Intent(Intent.ACTION_MAIN).addCategory(
Intent.CATEGORY_HOME).resolveActivityInfo(pm, 0);
int numTasks = recentTasks.size();
for (int i = 0; i < numTasks && (i < MAX_RECENT_TASKS); i++) {
HashMap<String, Object> singleAppInfo = new HashMap<String, Object>();// 当个启动过的应用程序的信息
final ActivityManager.RecentTaskInfo info = recentTasks.get(i);
Intent intent = new Intent(info.baseIntent);
if (info.origActivity != null) {
intent.setComponent(info.origActivity);
}
/**
* 如果找到是launcher,直接continue,后面的appInfos.add操作就不会发生了
*/
if (homeInfo != null) {
if (homeInfo.packageName.equals(intent.getComponent()
.getPackageName())
&& homeInfo.name.equals(intent.getComponent()
.getClassName())) {
MAX_RECENT_TASKS = MAX_RECENT_TASKS + 1;
continue;
}
}
// 设置intent的启动方式为 创建新task()【并不一定会创建】
intent.setFlags((intent.getFlags() & ~Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
| Intent.FLAG_ACTIVITY_NEW_TASK);
// 获取指定应用程序activity的信息(按我的理解是:某一个应用程序的最后一个在前台出现过的activity。)
final ResolveInfo resolveInfo = pm.resolveActivity(intent, 0);
if (resolveInfo != null) {
final ActivityInfo activityInfo = resolveInfo.activityInfo;
final String title = activityInfo.loadLabel(pm).toString();
Drawable icon = activityInfo.loadIcon(pm);
if (title != null && title.length() > 0 && icon != null) {
singleAppInfo.put("title", title);
singleAppInfo.put("icon", icon);
singleAppInfo.put("tag", intent);
singleAppInfo.put("packageName", activityInfo.packageName);
appInfos.add(singleAppInfo);
}
}
}
} catch (Exception e) {
e.printStackTrace();
return;
}
MAX_RECENT_TASKS = repeatCount;
}