Как вызвать калькулятор 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
Мне нужен код, который работает для всех. Кто-нибудь с какой-либо подсказкой?
- Открыть приложение галереи с Android Intent
- Запустить приложение для Android от ссылки браузера
- Как сделать упор на несколько действий
- Как проверить, может ли какое-либо намерение быть обработано из какой-либо деятельности?
- Приложение Gmail 5.0 не работает с «Разрешением, запрещенным для вложения», когда оно получает намерение ACTION_SEND
- как я могу отправить данные из onPostExecute в AsyncTask?
- Intent не устанавливает параметры камеры
- Не удалось запустить служебный
- Как сохранить предыдущее состояние деятельности
- Android: BroadcastReceiver намерен обнаружить фотокамеру камеры?
- Как передать URI на намерение?
- «Оценить это приложение» - ссылка в приложении Google Play Store на телефоне
- Отправить SMS с помощью намерения
вы можете попробовать установить 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();