Simon Macha Mwas Simon Macha Mwas - 9 days ago 5
Android Question

How to call android calculator on my app for all phones

public static final String CALCULATOR_PACKAGE ="com.android.calculator2";
public static final String CALCULATOR_CLASS ="com.android.calculator2.Calculator";
Intent intent = new Intent();

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


the above works for HTC only

public static final String CALCULATOR_PACKAGE ="com.sec.android.app.popupcalculator";
public static final String CALCULATOR_CLASS ="com.sec.android.app.popupcalculator.Calculator";


the above works for S3

I need a code that works for all of them. Someone with any clue ?Please give an example code

Answer

you can try as to Default calculator on all android devices:

ArrayList<HashMap<String,Object>> items =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);
    items.add(map);
 }
}

and now you can launch calculator application as:

if(items.size()>=1){
String packageName = (String) items.get(0).get("packageName");
Intent i = pm.getLaunchIntentForPackage(packageName);
if (i != null)
  startActivity(i);
} 
else{
      // Application not found
   }

And for Api >= 15 ,You can use

Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_APP_CALCULATOR);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Comments