启动默认计算器并返回导航后,用户将返回不同的活动而不是调用活动。当用户单击计算器按钮时,将打开设备默认计算器。在调用onBackPressed时,用户将返回到应用程序中不应该访问的其他活动。如何确保用户返回到调用活动?这是我的代码以及我尝试过的内容:
public static void openByName(Context context, String name){
ArrayList<HashMap<String,Object>> items =new ArrayList<HashMap<String,Object>>();
final PackageManager pm = context.getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);
for (PackageInfo pi : packs) {
if( pi.packageName.toLowerCase().contains(name)){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("appName", pi.applicationInfo.loadLabel(pm));
map.put("packageName", pi.packageName);
items.add(map);
}
}
if(items.size()>=1){
String packageName = (String) items.get(0).get("packageName");
Log.d(TAG, "PackageName: " + packageName);
Intent i = pm.getLaunchIntentForPackage(packageName);
if (i != null)
context.startActivity(i);
}
else{
// Application not found
Toaster.make(context, name + " not found");
}
}
尝试不同的方法之后,我不得不使用这种方式,因为它不会在某些设备上运行。