【问题标题】:How retrieve values from the Android Calculator如何从 Android 计算器中检索值
【发布时间】:2012-10-25 18:01:52
【问题描述】:

我正在开发一个用户点击EditText 的应用程序,它会显示安卓计算器,因此用户可以进行算术运算。

我想在用户按下 android 计算器中的等号按钮并显示它时检索最终值。使用标准的android计算器可以吗?

打开计算器的代码如下:

Intent intent = new Intent();           
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(new ComponentName(CALCULATOR_PACKAGE, CALCULATOR_CLASS));
startActivity(intent);

在哪里,

String CALCULATOR_PACKAGE ="com.android.calculator2";
String CALCULATOR_CLASS ="com.android.calculator2.Calculator";

关于如何从计算器中检索最终值的任何想法或建议?
谢谢

【问题讨论】:

  • 嗯...不太确定这个?我知道有 ContentProvider api 让我们的应用程序共享数据,但我不确定你将如何解决这个问题。也等待经验丰富的 SO 人的回答
  • "它显示安卓计算器" -- 没有"安卓计算器"。任何设备都可以有任何它想要的计算器应用程序,或者没有计算器应用程序。它当然不必有com.android.calculator2

标签: android calculator


【解决方案1】:

无法使用标准计算器,但该计算器是开源的,因此您可以创建自己的计算器。源代码包含一个名为 Logic (Logic.java) 的类;如果您更新方法 evaluateAndShowResult() 以自动将结果粘贴到剪贴板,然后在您的应用程序中进行粘贴,您就准备好了。

作为替代方案,如果您真的不需要计算器的 UI,您可以只使用 Logic 并将其余部分丢弃。

【讨论】:

  • 这听起来不错。我在哪里可以获得计算器的代码源?谢谢
【解决方案2】:

您可以使用 startActivityForResult 启动计算器以获取结果。

这是一个例子

Intent myIntent = new Intent();
myIntent.setClassName("com.android.calculator2", "com.android.calculator2.Calculator");
startActivityForResult(myIntent, CALC_INTENT_RETURN);

   /**
     * Framework method called when return from a launched intent is available.
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode,
        Intent data) {
    if (requestCode == CALC_INTENT_RETURN) {
        if (resultCode == RESULT_OK) {
                    mCalculator.setFeatureValue(mCurrentInputField, Double.parseDouble(data.getAction()));
                    resetValue();
        }
    }
}

http://code.google.com/p/android-labs/source/browse/trunk/BistroMath/src/com/google/android/bistromath/BistroMath.java?r=6

【讨论】:

  • 这段代码不起作用,至少在当前版本的计算器应用中是这样,因为相关活动从不调用setResult()(请参阅github.com/android/platform_packages_apps_calculator/blob/…)。
  • 类 Calculator 无法识别,因此我无法使用它作为我的问题的可能解决方案。还是谢谢
猜你喜欢
  • 2013-12-14
  • 2021-12-17
  • 1970-01-01
  • 2020-03-28
  • 2019-10-28
  • 2013-03-10
  • 1970-01-01
  • 2017-04-23
  • 2017-06-26
相关资源
最近更新 更多