Android打印所有应用的主Activity信息,并且启动程序

 List<ResolveInfo> resInfoList = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

该方法用于知道Intent的匹配结果,返回的结果从最匹配到最不匹配,也就是说第一个item就是resolveActivity(Intent, int)返回的结果

可以利用这个实现查看当前手机上所有的APP的主方法信息(这样就能知道当前手机装了哪些APP)

然后可以利用当前手机上所有的APP主方法信息来启动任意手机上的任意APP

示例代码:打印手机所有应用的主Activity信息,然后发现116是知乎就设了一个按钮启动知乎

public class PlayActivity extends AppCompatActivity {

    private static final String TAG = "PlayActivity";
    private List<ResolveInfo> mApps;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_play);
        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
        Log.i(TAG, "onCreate: "+mApps.size());
        for (int i=0;i<mApps.size();i++){
            Log.i(TAG, i+"onCreate: "+mApps.get(i).activityInfo.name+" "+mApps.get(i).activityInfo.packageName+" "+mApps.get(i).activityInfo.targetActivity);
            Log.i(TAG, i+"onCreate: "+mApps.get(i).activityInfo.applicationInfo.name+" "+mApps.get(i).activityInfo.applicationInfo.packageName+" "+mApps.get(i).activityInfo.applicationInfo.className);
        }
        Button button=findViewById(R.id.button4);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ComponentName componet = new ComponentName(mApps.get(116).activityInfo.packageName, mApps.get(116).activityInfo.name);
                Intent intent=new Intent();
                intent.setComponent(componet);
                startActivity(intent);
            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/yh18668197127/article/details/86628254