Проблемы HTC One с намерением ACTION_CALL

#android #android-intent #htcsense

#Android #android-намерение #htcsense

Вопрос:

Я выпустил приложение в App Store, которое, похоже, столкнулось с проблемами с HTC One. Как только приложение открывается, оно выполняет намерение совершить телефонный звонок ACTION_CALL. У меня есть намерение вызова, но доступ к нему осуществляется после нажатия кнопки, за которым следует доступ к службам определения местоположения, а затем 5-секундный вызов sleep (). Но с HTC Sense он переходит прямо к вызову, даже не показывая макеты. У меня Galaxy S3 работает под управлением 4.3, а целевой SDK для приложения равен 19, и приложение работает без сбоев.

Почему это происходит? Есть ли у HTC Sense проблемы с намерениями вызова? Есть ли какой-либо способ остановить выполнение намерения, что-то вроде SignalHandler, если это устройство HTC Sense?

HTC Sense 5.0, Android: 4.3

Код (действие, вызывающее намерение телефона):

 protected void onCreate(Bundle paramBundle) {
    super.onCreate(paramBundle);
    setContentView(R.layout.activity_test);
    x=9;
    final TextView localTextView = (TextView) findViewById(R.id.addr);
    LocationManager localLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    localLocationManager.getLastKnownLocation("gps");
    localLocationManager.requestLocationUpdates("gps", 2000L, 10.0F, new LocationListener() {
        public void onLocationChanged(Location paramAnonymousLocation) {
            double d1 = paramAnonymousLocation.getLatitude();
            double d2 = paramAnonymousLocation.getLongitude();
            Geocoder localGeocoder = new Geocoder(Test.this.getApplicationContext(), Locale.getDefault());
            try {
                List localList = localGeocoder.getFromLocation(d1, d2, 1);
                if (localList.size() == 1) {
                    Address localAddress = (Address) localList.get(0);
                    Object[] arrayOfObject = new Object[3];
                    if (localAddress.getMaxAddressLineIndex() > 0) ;
                    for (String str1 = localAddress.getAddressLine(0); ; str1 = "") {
                        arrayOfObject[0] = str1;
                        arrayOfObject[1] = localAddress.getAddressLine(1);
                        arrayOfObject[2] = localAddress.getCountryName();
                        String str2 = String.format("%s, %s, %s", arrayOfObject);
                        localTextView.setText(str2);
                        if(x==9){
                        Test.this.waititout();}
                        return;
                    }
                }
            } catch (IOException localIOException) {
                localIOException.printStackTrace();
                return;
            } catch (InterruptedException localInterruptedException) {
                localInterruptedException.printStackTrace();
            }
        }

        public void onProviderDisabled(String paramAnonymousString) {
            localTextView.setText("TURN ON GPS DUMMY");
        }

        public void onProviderEnabled(String paramAnonymousString) {
        }

        public void onStatusChanged(String paramAnonymousString, int paramAnonymousInt, Bundle paramAnonymousBundle) {
        }
    });
}

public void waititout()
        throws InterruptedException {
    new Thread() {
        public void run() {
            try {
                Date localDate = new Date();
                Calendar localCalendar = GregorianCalendar.getInstance();
                localCalendar.setTime(localDate);
                int i = localCalendar.get(Calendar.HOUR_OF_DAY);
                Thread.currentThread();
                Thread.sleep(4000L);
                Intent localIntent = new Intent("android.intent.action.CALL");
                localIntent.setData(Uri.parse("tel:17325450900"));
                Test.this.startActivity(localIntent);

                return;
            } catch (InterruptedException localInterruptedException) {
                System.out.println(localInterruptedException);
            }
        }
    }
            .start();
}
  

Комментарии:

1. Вы действительно выводите конечным пользователям сообщение следующего содержания: «ВКЛЮЧИТЕ GPS-ФИКТИВНЫЙ»? Слишком смешно.

2. Я не вижу никакого события onClick, просто оно x=9 помещается перед прослушивателем местоположения, а затем проверяется, x==9 чтобы вызвать телефонный звонок, если выполнены другие условия. Возможно, чего-то не хватает в приведенном выше примере или отсутствует условие, которое вы хотели иметь?

3. @JeremyMiller Да, в основном это действие обращается к местоположению через GPS, отображает адрес, ожидает 3 секунды, а затем запускает намерение вызова. Событие OnClick — это просто намерение для этого действия, оно буквально означает намерение LocalIntent = новое намерение (это, Test.class )

4. ОК. Извините, но тогда я в растерянности, и мой телефон — HTC DNA, поэтому бесполезен. Приведенный выше код, однако, достигается только через намерение, что заставляет меня задуматься, есть ли другой способ создания намерения — это всего лишь гипотетическое предположение в попытке помочь.

5. Установлен на HTC DNA с Android 4.4.2 и HTC Sense 5.5. Вызовы не выполняются, поэтому, предположительно, на моем устройстве все работает нормально.