Mi aplicación de Android está anulando la aplicación Lyft?

13

Creé una aplicación de Android que de alguna manera se hace cargo o anula la aplicación del controlador Lyft. Básicamente, cada vez que un usuario tiene mi aplicación de Android descargada, de alguna manera se hace cargo de su aplicación Lyft. No recibirá ninguna solicitud de viaje de Lyft (incluso en medio de un tiempo súper ocupado). Luego, cuando elimina mi aplicación, vuelve a funcionar perfectamente. Ella inmediatamente se monta de nuevo. Es la cosa más rara que he visto. Y esto no es solo coincidencia, cuando ella va a matar sus aplicaciones, literalmente muestra el logotipo de mi aplicación tomando el control de la aplicación del controlador Lyft.Foto adjuntaObserve cómo originalmente tiene el logotipo de Lyft. Luego, cuando mi aplicación está instalada, tiene mi logotipo para la aplicación Lyft (mi logotipo es solo el logotipo predeterminado de Android). ¡Incluso puede matar mi aplicación, y su aplicación de controlador Lyft y Uber tampoco funcionan! La única forma de solucionarlo es desinstalar completamente mi aplicación y reiniciar su teléfono. Entonces, todo funciona perfectamente. Un elemento importante es que hago un seguimiento de la ubicación todo el tiempo. No estoy seguro de por dónde empezar con este error, por lo que cualquier idea es útil. ¡Gracias! El usuario está utilizando un Galaxy Note 10+ con Android 10. Ninguno de nuestros otros usuarios de Android nos ha informado sobre este problema. Parece ser un caso único para este teléfono.

Aquí están todos mis manifiestos e intenciones:

    <?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>
Daniel Jones
fuente
3
Comience por incluir en la pregunta su manifiesto y todos los filtros de intención.
Morrison Chang
Bien, agregué el manifiesto.
Daniel Jones
1) ¿Qué versiones de Android / dispositivos está ocurriendo? 2) ¿Está haciendo algo especial programáticamente con Context.registerReceiver()o PackageManager? Ver: ¿Cómo crear / deshabilitar el filtro de intención de manera programable?
Morrison Chang
99
Su cliente podría preferir que usted recorte su nombre ...
Tenfour04
2
Algunas sugerencias: 1. Pídale que instale su aplicación. Reinicie el dispositivo y luego comience a usar Uber / Lyft sin abrir su aplicación y vea si eso funciona 2. El dispositivo puede tener algún tipo de malware / virus. Pídale que haga un restablecimiento de fábrica y luego realice la tarea.
Sahil Manchanda

Respuestas:

2

Creo que su problema está relacionado con su nameelemento definido en su Manifest.xml, específicamente, el que está debajo de la applicationetiqueta.

Tienes el tuyo definido como:, lo .parse.parseque me parece bastante extraño. Al mirar este enlace desde la plataforma de análisis, creo que eso es lo que estás declarando como el nombre de tu aplicación.

Este elemento de nombre, aunque puede parecer poco importante, es en realidad donde su aplicación está generando el contexto de nivel de aplicación, o en este caso, donde Intentsse están descubriendo los externos .

Es muy probable que el sistema no pueda distinguir cuál tirar y, por lo tanto, está tirando del suyo sobre Lyft cuando puede.

Para resolver esto, simplemente declare su propia clase que extienda la Applicationclase en algún lugar de su proyecto de esta manera:

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();
    }
}

Luego solo actualice su manifiesto para que se vea así:

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

Y debería funcionar correctamente.

Si todavía tiene problemas, actualice su pregunta con más información y podemos diagnosticarla más a fondo.

PGMacDesign
fuente
La instancia de la aplicación de Android solo puede y debe ser creada por Android OS ... ¿qué se supone que debe hacer esa instancia de getinstance allí? Además, nunca debe hacer referencia estática a su aplicación ... confunde el sistema Android cuando quiere borrar las aplicaciones no utilizadas de su tiempo de ejecución
TacB0sS
Además, si el nombre de la aplicación comienza con un .algo, busca la clase de aplicación debajo, ${packageName}.somethingpor lo que tampoco debería ser la razón
TacB0sS
Aquí hay material de referencia si tiene curiosidad sobre los diversos propósitos de este enfoque. github.com/codepath/android_guides/wiki/…
PGMacDesign
El enlace no describe su enfoque ... Apostaría mi carrera a que new MyApplication()nunca se llama, a menos que se ejecute en una rom personalizada desordenada. Tampoco donde tienen una referencia estática a la aplicación
TacB0sS