[mobilesafe] 06_获取桌面快捷图标

Android 4.0

获取桌面快捷图标

技术点:
1、桌面图标和列举的图标数目不一致

2、一个Activity只要配置了:就会在桌面生成一个图标,不过点击该图标进去的还是该Activity
<intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
3、应用:
老人桌面
获取桌面快捷图标
package cn.zengfansheng.getIconApp;
 
import java.util.List;
 
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
 
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        // 1、获取包管理器
        PackageManager packageManager = getPackageManager();
 
        // 2、查询所有的Activity,根据符合条件的intent
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        int flags = PackageManager.GET_RESOLVED_FILTER;// 这个标记一定要加上,IntentFilter
        List<ResolveInfo> queryIntentActivities = packageManager.queryIntentActivities(intent, flags);
 
        // 3、遍历
        for (ResolveInfo resolveInfo : queryIntentActivities) {
            String packageName = resolveInfo.activityInfo.packageName;// 包名
            String name = resolveInfo.activityInfo.name;// android:name属性的值
            String iconName = resolveInfo.activityInfo.applicationInfo.loadIcon(packageManager).toString();
 
            System.out.println(packageName);
            System.out.println(name);
            System.out.println(iconName);
            System.out.println("----------");
        }
        System.out.println(queryIntentActivities.size());
    }
}
结果: