Мое приложение для Android перекрывает приложение Lyft?

13

Я создал приложение для Android, которое каким-то образом захватывает или отменяет приложение драйвера Lyft. По сути, всякий раз, когда пользователь загружает мое приложение для Android, оно каким-то образом захватывает его приложение Lyft. Она не получит никаких запросов на поездку от Lyft (даже в середине очень занятого времени). Затем, когда она удаляет мое приложение, оно снова работает отлично. Она немедленно получает аттракционы снова. Это самая странная вещь, которую я когда-либо видел. И это не просто случайность, когда она собирается убивать свои приложения, это буквально показывает логотип моего приложения, который берет на себя приложение драйвера Lyft.Фото прилагаетсяОбратите внимание, как изначально он имеет логотип Lyft. Затем, когда мое приложение установлено, оно имеет мой логотип для приложения Lyft (мой логотип - это просто логотип Android по умолчанию). Она может даже убить мое приложение, и ее приложение Lyft, а также приложение Uber не работают! Единственный способ исправить это - полностью удалить мое приложение и перезагрузить телефон. Тогда все работает отлично. Один важный элемент - я все время отслеживаю местоположение. Я просто не совсем уверен, с чего начать эту ошибку, поэтому любые идеи полезны. Спасибо! Пользователь использует Galaxy Note 10+ с Android 10. Никто из наших других пользователей Android не рассказал нам об этой проблеме. Вроде бы уникальный чехол для этого телефона.

Вот все мои манифесты и намерения:

    <?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.danieljones.nomad_drivers">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

    <application
        android:requestLegacyExternalStorage="true"
        android:name=".parse.Parse"
        android:allowBackup="true"
        android:fullBackupContent="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".checkIn.CheckInActivity"
            android:label="@string/title_activity_check_in"/>
        <activity android:name=".insurance.analysis_activity.ZendriveAnalysisActivity" />
        <activity android:name=".fare.breakdowns.FareBreakdownActivity" />
        <activity
            android:name=".navigation.HomeNavigationActivity"
            android:label="@string/title_activity_home_navigation"
            android:screenOrientation="portrait"/>
        <activity android:name=".welcome.LoginActivity" />
        <activity android:name=".welcome.special_code.CodeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".new_rides.ride_detail.NewRideDetailActivity" />
        <activity android:name=".rides_lists.ride_detail.RideDetailActivity" />
        <activity android:name=".personal_rides.ride_detail.PersonalRideDetailActivity" />
        <activity android:name=".review_list.ReviewActivity"/>
        <activity android:name=".user_profile.driver_card.EditProfileActivity" />
        <activity android:name=".user_profile.edit_form.EditProfileFormActivity"/>
        <receiver android:name=".insurance.zendrive.MyZendriveBroadcastReceiver" />
        <activity android:name=".archived_rides.ride_detail.ArchivedRideDetailActivity" />
        <service
            android:name="com.parse.fcm.ParseFirebaseMessagingService"
            android:permission="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
        <receiver
            android:name=".push_notifications.ParseCustomBroadcastReceiver"
            android:exported="false">
            <intent-filter>
                <action android:name="com.parse.push.intent.RECEIVE" />
                <action android:name="com.parse.push.intent.DELETE" />
                <action android:name="com.parse.push.intent.OPEN" />
            </intent-filter>
        </receiver>
    </application>
Дэниел Джонс
источник
3
Начните с включения в вопрос своего манифеста и всех фильтров намерений.
Моррисон Чанг
Хорошо, я добавил манифест.
Даниэль Джонс
1) В каких версиях Android / устройств это происходит? 2) Вы делаете что-то особенное программно с Context.registerReceiver()или PackageManager. Смотрите: Как создать / отключить интент-фильтр программируемым способом?
Моррисон Чанг
9
Ваш клиент может предпочесть, чтобы вы
вырезали
2
Некоторые предложения: 1. Попросите ее установить ваше приложение. Перезагрузите устройство, а затем начните использовать Uber / Lyft, не открывая свое приложение, и посмотрите, работает ли оно 2. На устройстве может быть какое-то вредоносное ПО / вирус. Попросите ее сделать сброс настроек и затем выполнить задание.
Сахил Манчанда

Ответы:

2

Я считаю, что ваша проблема связана с вашим определенным nameэлементом в вашем Manifest.xml, в частности, под applicationтегом.

Вы определили как:, .parse.parseчто мне кажется довольно странным. Глядя на эту ссылку с платформы разбора, я думаю, это то, что вы объявляете в качестве названия вашего приложения.

Этот элемент имени, хотя он может показаться неважным, на самом деле, где ваше приложение генерирует контекст уровня приложения, или, в данном случае, когда Intentsобнаруживаются внешние .

Весьма вероятно, что система не может различить, кого вытащить, и поэтому она тянет вас за Lyft, когда это возможно.

Чтобы решить эту проблему, просто объявите свой собственный класс, который расширяет Applicationкласс где-то в вашем проекте следующим образом:

public class MyApplication extends Application {

    private static MyApplication sInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        sInstance = this;
    }

    /**
     * Get an instance of the application. 
     *
     * @return {@link MyApplication}
     */
    public static synchronized MyApplication getInstance() {
        if (sInstance == null) {
            sInstance = new MyApplication();
        }
        return sInstance;
    }

    /**
     * Get context
     *
     * @return Context
     */
    public static synchronized Context getContext() {
        return getInstance().getApplicationContext();
    }
}

Затем просто обновите свой манифест, чтобы он выглядел так:

 <application
        .
        android:name=".MyApplication"
        .
        .
        .>
...

И это должно функционировать правильно.

Если у вас все еще есть проблемы, обновите ваш вопрос с дополнительной информацией, и мы сможем диагностировать ее дальше.

PGMacDesign
источник
Экземпляр приложения для Android может и должен быть создан только для Android OS .. Что это должен делать getinstance? Кроме того, вы никогда не должны статически ссылаться на ваше приложение ... оно запутывает систему Android, когда она хочет удалить неиспользуемые приложения из их среды выполнения
TacB0sS
Кроме того, если имя приложения начинается с .something, оно ищет класс приложения, ${packageName}.somethingтак что это тоже не должно быть причиной
TacB0sS
Вот некоторые справочные материалы, если вам интересно узнать о различных целях этого подхода. github.com/codepath/android_guides/wiki/...
PGMacDesign
Ссылка не описывает ваш подход. Я готов поспорить, что моя карьера new MyApplication()никогда не будет называться, если только вы не запутались в нестандартной версии. Также нет, где они хранят статическую ссылку на приложение
TacB0sS