从应用程序启动特定活动

时间:2013-10-27 20:07:04

标签: android android-activity launch android-launcher

只是一个小问题:

例如,我的申请TestActivity中有com.example.testapp个活动 但该活动没有标记android.intent.category.LAUNCHER

现在我的问题是如何检查某项活动是否subpackage.SomeActivity 存在于包com.test.somepackage

与在控制台中输入相同:

adb shell am start -n com.test.somepackage/subpackage.SomeActivity

如果它存在,我如何从其他应用程序启动它?

×××××澄清我的问题×××××

我在android中搜索功能 Intent startthis = new Intent (packagename, activityname);

如果它可能像什么 ActivityInfo[] ai = fetchAllActivitysFromPackage(packagename);

android中是否有任何功能可能相同?

1 个答案:

答案 0 :(得分:3)

您可以通过以下方式获取包的所有活动:

List<PackageInfo> installedPackages = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);
Iterator packageIterator = installedPackages.iterator();
PackageInfo packageInfo = null;
while(packageIterator.hasNext()){
    packageInfo = (PackageInfo) packageIterator.next();
    if(packageInfo.activities != null){
        for(ActivityInfo activity : packageInfo.activities){
            Log.d("ACTIVITY", activity.name);
        }
    }
}

但是,如果该应用已为其定义了一个intent-filter,您现在只能启动外部活动,如果您现在是意图过滤器的确切操作。

<强>更新 要获取一个包名称的所有活动,请使用:

PackageInfo packageInfo = getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);