Как вызвать калькулятор 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> items =new ArrayList>(); final PackageManager pm = getPackageManager(); List packs = pm.getInstalledPackages(0); for (PackageInfo pi : packs) { if( pi.packageName.toString().toLowerCase().contains("calcul")){ HashMap map = new HashMap(); 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.

Ну, это модифицированный ответ @ ρяσѕρєя K, потому что он отлично работает на мобильных телефонах Samsung, и только пакеты имеют «calc», но не все мобильные телефоны, такие как HTC AND LENOVO ETC

А для 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); 

ЭТО МОЖЕТ ПРИВЕСТИ К ОШИБКЕ, КАК ЭТО

android.content.ActivityNotFoundException: Никакой активности не найдено для обработки Intent {act = android.intent.action.MAIN cat = [android.intent.category.APP_CALCULATOR] flg = 0x10000000}

СОБЫТЬ ВЗГЛЯД НА ЭТО

ЗАГРУЗИТЬ все приложения в Array

  // Declare universal if you want Access any where from scope ArrayList> items; PackageManager pm ; List packs; // initialise From Oncreate if you want items =new ArrayList>(); pm = getPackageManager(); packs = pm.getInstalledPackages(0); for (PackageInfo pi : packs) { HashMap map = new HashMap(); map.put("appName", pi.applicationInfo.loadLabel(pm)); map.put("packageName", pi.packageName); items.add(map); } 

ЭТО ТРЕТЬЯ ЧАСТЬ Мы проходим через все приложения, чтобы получить имя приложения или совпадение «Калькулятор»,

 public void opencalculator(){ int d=0; if(items.size()>=1){ int j=0; for(j=0;j 

CALL OPENCALCULATOR

 opencalculator(); 
Interesting Posts
Давайте будем гением компьютера.