我使用下面的代码来获取启动器活动名称属于特定包名称:
Intent intent = new Intent();
intent.setPackage(aPackageName);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ResolveInfo result = getPackageManager().resolveActivity(intent, 0);
我将result.activityInfo.name保存到共享首选项
后来我想开始这个活动,但是如何获得它的包名?
或者,是否可以在不知道它所属的包名的情况下启动此活动?
Intent launchIntent =
getPackageManager().getLaunchIntentForPackage(How to get the package name);
if(launchIntent != null){
startActivity(launchIntent);
}
知道我保存的活动名称不是我的。
答案 0 :(得分:0)
试试这个: -
public static String PACKAGE_NAME;
PACKAGE_NAME = getApplicationContext().getPackageName();
答案 1 :(得分:0)
您可以使用下面给出的代码来获取应用程序的包名称
在Java支持的代码中:
String packageName=this.getPackageName(); // where this represent the context
在Kotlin支持的代码中:
var packageName:String=this.packageName // where this represent the context
答案 2 :(得分:0)
使用以下代码从已安装的应用中获取所有包的启动器活动:
final PackageManager pm = getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));
for (ResolveInfo temp : appList) {
Log.v("my logs", "package and activity name = "
+ temp.activityInfo.packageName + " "
+ temp.activityInfo.name);
}
答案 3 :(得分:0)
唯一可靠的方法是Vladyslav Matviienko建议,它将包名称与每个活动名称一起存储在一个散列图中。感谢大家的帮助。
答案 4 :(得分:0)
要回答这个问题,
如何从活动名称获取软件包名称
如果您要从启动器活动中找到包名称,请检查以下内容,
String activityName = "TermuxActivity";
PackageManager pm = getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> activityList = pm.queryIntentActivities(intent, 0);
Collections.sort(activityList, new ResolveInfo.DisplayNameComparator(pm));
for (ResolveInfo temp : activityList) {
if(temp.activityInfo.name.endsWith(activityName)){
Log.i("ActivityCheck", " Activity : " +temp.activityInfo.name+ " package name: " +temp.activityInfo.packageName);
}
}
输出:
ActivityCheck: Activity : com.termux.app.TermuxActivity package name: com.termux