Viv*_*pai 56
迟到但更好的方式是提供启动活动的确切意图
PackageManager pm = getPackageManager();
Intent intent=pm.getLaunchIntentForPackage(pacakgeName);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
Pra*_*gar 24
使用以下代码获取所有包的启动器活动:
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);
}
Run Code Online (Sandbox Code Playgroud)
Bor*_*jev 13
即使上面的答案直接回答OP的问题,我想补充两分钱:
/** Backwards compatible method that will clear all activities in the stack. */
public void startLauncherActivity(Context context) {
PackageManager packageManager = context.getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(context.getPackageName());
ComponentName componentName = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(componentName);
context.startActivity(mainIntent);
}
Run Code Online (Sandbox Code Playgroud)
在这里,我不仅获得了应用程序的启动器活动,而且还清除了活动的所有后台堆栈(这是我触发启动器活动时实际需要的).例如,我在过期的身份验证令牌的情况下调用它.
重要的是使用IntentCompat
,否则必须使用Intent
flag Intent.FLAG_ACTIVITY_CLEAR_TASK
,这仅在API 11中引入.
归档时间: |
|
查看次数: |
23875 次 |
最近记录: |