Как вызвать калькулятор Android для моего приложения для всех телефонов

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)); 

Выше работает только для HTC

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

Вышеупомянутые работы для S3

Мне нужен код, который работает для всех. Кто-нибудь с какой-либо подсказкой? Приведите пример кода

Вы можете попробовать установить calculator по умолчанию на всех устройствах Android:

 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); } } 

И теперь вы можете запустить приложение калькулятора:

 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 } 

А для Api> = 15 вы можете использовать

 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); 

Вам нужно будет проверить, доступно ли имя пакета калькулятора по умолчанию (com.android.calculator2):

 try{ ApplicationInfo info = getPackageManager() .getApplicationInfo("com.android.calculator2", 0 ); } catch( PackageManager.NameNotFoundException e ){ //application doesn't exist } 

Samsung использует множество приложений, предустановленных с TouchWiz, которые недоступны на складе Android. Поэтому, если вы получаете исключение из вышесказанного, вы можете проверить, доступен ли калькулятор Samsung. Кстати, я думаю, что com.android.calculator2 не является специфичным для HTC.