查找所有activity

该博客介绍了一个Android应用,用于查找设备上所有包含特定关键字的Activity。它使用PackageManager查询IntentActivities,并显示匹配的Activity名称和包名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.necsthz.android.demo;

 

import java.util.Collections;

import java.util.List;

 

import android.app.Activity;

import android.content.ComponentName;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.content.pm.ResolveInfo;

import android.os.Bundle;

import android.text.InputType;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

 

public class AppFindActivity extends Activity {

private EditText mEdtInputKey;

private EditText mEdtStart;

private TextView mTxtFoundRst;

private String mStrInputKey;

private StringBuffer mStrFoundRst;

private List<ResolveInfo> mAppsList;

/** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

 

        mEdtInputKey = (EditText) findViewById(R.id.edtKeywd);

        mEdtInputKey.getInputType();

        mEdtInputKey.setInputType(InputType.TYPE_NULL);

        mEdtStart = (EditText) findViewById(R.id.edtStart);

        mTxtFoundRst = (TextView) findViewById(R.id.txtFoundRst);

        Button btnGet = (Button) findViewById(R.id.btnGet);

        btnGet.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v) {

mStrInputKey = mEdtInputKey.getText().toString().trim();

mStrFoundRst = new StringBuffer();

seekAppActivities();

mTxtFoundRst.setText(mStrFoundRst);

}

        });

 

        Button btnStart = (Button) findViewById(R.id.btnStart);

        btnStart.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v) {

try {

if ((mAppsList != null) && (mAppsList.size() > 0)) {

int idStart = Integer.parseInt(mEdtStart.getText().toString().trim());

ResolveInfo info = mAppsList.get(idStart);

Intent intent = new Intent(Intent.ACTION_MAIN);;

intent.addCategory(Intent.CATEGORY_LAUNCHER);

       intent.setComponent(

        new ComponentName(

info.activityInfo.packageName,

info.activityInfo.name));

       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

       

AppFindActivity.this.startActivity(intent);

}

} catch (Exception e) {

e.printStackTrace();

}

}

        });

    }

    private void seekAppActivities() {

     PackageManager appManager = getPackageManager();

//     manager.getInstalledApplications(flags)

//     manager.getInstalledPackages(flags);

 

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);

mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

// mainIntent.addCategory(Intent.CATEGORY_DEFAULT);

 

mAppsList = appManager

.queryIntentActivities(mainIntent, 0);

Collections.sort(mAppsList,

new ResolveInfo.DisplayNameComparator(appManager));

 

addDisplayTxt("�u" + mAppsList.size() + "�v items is found:");

for (int i = 0; i < mAppsList.size(); i++) {

ResolveInfo info = mAppsList.get(i);

if (info.activityInfo.name.contains(mStrInputKey)) {

addDisplayTxt("index: " + i);

addDisplayTxt("Name: " + info.activityInfo.name);

addDisplayTxt("PkgName: " + info.activityInfo.packageName);

}

}

    }

 

private void addDisplayTxt(String str) {

mStrFoundRst.append(str + "/n");

System.out.println(str + "/n");

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值