1

我正在从活动启动设备的标准计算器,但如果我关闭计算器,它不会返回到启动计算器的活动。我必须设置某个 FLAG 吗?

代码:

public void LaunchDeviceCalculator(){
        ArrayList<HashMap<String,Object>> packages =new ArrayList<HashMap<String,Object>>();
        final PackageManager pm = getPackageManager();
        List<PackageInfo> packs = pm.getInstalledPackages(0);  
        for (PackageInfo pi : packs) {
        if( pi.packageName.toString().toLowerCase().contains("calcul")){
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("appName", pi.applicationInfo.loadLabel(pm));
            map.put("packageName", pi.packageName);
            packages.add(map);
    }
        }

        if(packages.size()>=1){
            String packageName = (String) packages.get(0).get("packageName");
            Intent i = pm.getLaunchIntentForPackage(packageName);

            if (i != null)
              startActivity(i);
            } 
}
4

2 回答 2

1

对于它的价值,第三方计算器可以处理这种情况: http ://www.efalk.org/RpnCalcFinancial/

搜索开发人员说明。

开发人员列出了将启动应用程序的 Intent 以及返回的 Intent 和 extras。

据我记得,它是免费的。

它确实使用反向波兰表示法又名 RPN。

于 2013-01-22T22:41:45.163 回答
0

启动计算器可以通过以下代码完成。请查看此链接了解更多详情:Android Intents For App Integration(调用计算器、播放视频、打开编辑器)

我还没有尝试过,但代码看起来很简单很好。让我知道这个是否奏效。

// activity name and package for stock calculator    
    private static final String CALCULATOR_PACKAGE_NAME = "com.android.calculator2";    
    private static final String CALCULATOR_CLASS_NAME = "com.android.calculator2.Calculator";
    public void launchCalculator() {   
         Intent intent = new Intent();   
         intent.setAction(Intent.ACTION_MAIN);   
         intent.addCategory(Intent.CATEGORY_LAUNCHER);  
         intent.setComponent(new Component Name(CALCULATOR_PACKAGE_NAME, CALCULATOR_CLASS_NAME));   
    try {   
         this.start Activity(intent); 
    } catch (ActivityNotFoundException noSuchActivity) {  
         // handle exception where calculator intent filter is not registered  
    }  
}
于 2013-07-09T11:31:51.147 回答