android - 从应用程序启动特定 Activity

标签 android android-activity launch android-launcher

只是一个小问题:

例如,我有 Activity TestActivity在我的应用程序中com.example.testapp
但该 Activity 没有标志 android.intent.category.LAUNCHER

现在我的问题是如何检查给定的 Activity 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 中是否有类似的功能?

最佳答案

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

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 过滤器并且您现在知道该 Intent 过滤器的确切操作时,您才能启动外部 Activity 。

更新: 要获取一个包名称的所有 Activity ,请使用:

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

关于android - 从应用程序启动特定 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622905/

相关文章:

java - 如何在应用程序中的 Activity 之间添加几秒钟的延迟?

java - 启动和关闭指向 Web 应用程序的 native 浏览器

ios - 通过自定义 URL 方案调用 iOS 应用程序

android - 无法构建 Android 应用程序 FabricGenerateResourcesDebug

android - 如何在android中显示注册或商标符号?

android - 如何在 MapBox Android 上设置标记 Z-index?

AsyncTask 中的 Android getCacheDir

android - 如何在启动时启动/启动应用程序 Android

iphone - 当 USB 连接时,如何从终端启动任何 iPhone 应用程序?

安卓 java.lang.IllegalArgumentException : Invalid Transition types