只是一个小问题:
例如,我的申请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中是否有任何功能可能相同?
答案 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);