Как вызвать калькулятор 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
Мне нужен код, который работает для всех. Кто-нибудь с какой-либо подсказкой? Приведите пример кода
Ответы
Ответ 1
вы можете попробовать по умолчанию 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);
Ответ 2
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_APP_CALCULATOR);
startActivity(i);
Ответ 3
Вам нужно будет проверить, доступно ли имя пакета калькулятора по умолчанию (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.
Ответ 4
Ну, это Модифицированный ответ @pяσѕρєя 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);
Забастовкa > ЭТО МОЖЕТ ПРИВЕСТИ К ОШИБКЕ, КАК ЭТО.
android.content.ActivityNotFoundException: активность не обнаружена Intent {act = android.intent.action.MAIN cat = [android.intent.category.APP_CALCULATOR] flg = 0x10000000}
SO LETS ВЗЯТЬ НА ЭТОМ
ЗАГРУЗИТЬ все приложения в Array
// Declare universal if you want Access any where from scope
ArrayList<HashMap<String,Object>> items;
PackageManager pm ;
List<PackageInfo> packs;
// initialise From Oncreate if you want
items =new ArrayList<HashMap<String,Object>>();
pm = getPackageManager();
packs = pm.getInstalledPackages(0);
for (PackageInfo pi : packs)
{
HashMap<String, Object> map = new HashMap<String, Object>();
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<items.size();j++){
String AppName = (String) items.get(j).get("appName");
// Log.w("Name",""+AppName);
if(AppName.matches("Calculator"))
{
d=j;
break;
}
}
String packageName = (String) items.get(d).get("packageName");
Intent i = pm.getLaunchIntentForPackage(packageName);
if (i != null){
Toast.makeText(getContext(),"STARTING",Toast.LENGTH_SHORT).show();
startActivity(i);}
else {
Toast.makeText(getContext(),"SORRY I CANT OPEN CALCULATOR :(",Toast.LENGTH_SHORT).show();
}
}
else{
Toast.makeText(getContext(),"SORRY I CANT START CALCULATOR :(",Toast.LENGTH_SHORT).show();
}
}
CALL OPENCALCULATOR
opencalculator();
Ответ 5
Привет, я мог бы открыть калькулятор, но теперь я хочу поставить цифры там, как вы знаете, например, 123 + 345, 23x123 и т.д. Но я не могу, кто-нибудь, чтобы помочь мне?