只是一个小问题:
例如,我有 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/