How to call android calculator on my app for all phones
You'll have to check if the default calculator package name(com.android.calculator2) is available with this:
try{
ApplicationInfo info = getPackageManager()
.getApplicationInfo("com.android.calculator2", 0 );
} catch( PackageManager.NameNotFoundException e ){
//application doesn't exist
}
Samsung uses a lot of apps preinstalled with TouchWiz which aren't available in stock Android. Therefore if you get an Exception in the above you can check if Samsung's calculator is available. Btw I think com.android.calculator2 is not HTC specific.
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);
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_APP_CALCULATOR);
startActivity(i);