Mon application Android remplace l'application Lyft?

13

J'ai créé une application Android qui prend en charge ou remplace l'application du pilote Lyft. Fondamentalement, chaque fois qu'un utilisateur télécharge mon application Android, il reprend en quelque sorte son application Lyft. Elle ne recevra aucune demande de trajet de Lyft (même au milieu d'une période très chargée). Puis, lorsqu'elle supprime mon application, cela fonctionne à nouveau parfaitement. Elle se remet immédiatement en route. C'est la chose la plus étrange que j'aie jamais vue. Et ce n'est pas seulement une coïncidence, quand elle va tuer ses applications, cela montre littéralement le logo de mon application qui reprend l'application du pilote Lyft.Photo ci-jointeRemarquez comment il a à l'origine le logo Lyft. Ensuite, lorsque mon application est installée, elle a mon logo pour l'application Lyft (mon logo est juste le logo Android par défaut). Elle peut même tuer mon application, et son application de pilote Lyft et Uber ne fonctionne pas! La seule façon de le réparer est de désinstaller complètement mon application et de redémarrer son téléphone. Ensuite, tout fonctionne parfaitement. Un élément important est que je surveille toujours l'emplacement. Je ne sais pas vraiment par où commencer avec ce bogue, donc toutes les idées sont utiles. Merci! L'utilisateur utilise un Galaxy Note 10+ avec Android 10. Aucun de nos autres utilisateurs Android ne nous a parlé de ce problème. Cela semble être un cas unique pour ce téléphone.

Voici tous mes manifestes et mes intentions:

    <?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
la source
3
Commencez par inclure dans la question votre manifeste et tous les filtres d'intention.
Morrison Chang
D'accord, j'ai ajouté le manifeste.
Daniel Jones
1) Quelles versions d'Android / appareils cela se produit-il? 2) Faites-vous quelque chose de spécial par programme avec Context.registerReceiver()ou PackageManager. Voir: Comment créer / désactiver le filtre d'intention de manière programmable?
Morrison Chang
9
Votre client pourrait préférer que vous
recadriez
2
quelques suggestions: 1. Demandez-lui d'installer votre application. Redémarrez l'appareil, puis commencez à utiliser Uber / Lyft sans ouvrir votre application et voyez si cela fonctionne. 2. L'appareil peut avoir une sorte de malware / virus. Demandez-lui d'effectuer une réinitialisation d'usine, puis effectuez la tâche.
Sahil Manchanda

Réponses:

2

Je crois que votre problème est lié à votre nameélément défini dans votre Manifest.xml, en particulier, celui sous la applicationbalise.

Vous avez défini le vôtre comme suit .parse.parse, ce qui me semble plutôt étrange. En regardant ce lien depuis la plate-forme d'analyse, je pense que c'est ce que vous déclarez comme le nom de votre application.

Cet élément de nom, bien qu'il puisse sembler sans importance, est en fait l'endroit où votre application génère le contexte de niveau application à partir de, ou dans ce cas, où les externes Intentssont découverts.

Il est fort probable que le système ne puisse pas distinguer lequel tirer et il tire donc le vôtre sur Lyft quand il le peut.

Pour résoudre ce problème, déclarez simplement votre propre classe qui étend la Applicationclasse quelque part dans votre projet comme ceci:

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

Mettez ensuite à jour votre manifeste pour qu'il ressemble à ceci:

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

Et cela devrait fonctionner correctement.

Si vous rencontrez toujours des problèmes, mettez à jour votre question avec plus d'informations et nous pourrons la diagnostiquer davantage.

PGMacDesign
la source
L'instance d'application Android ne peut et ne doit être créée que par Android OS. Qu'est-ce que Getinstance suppose de faire là-bas? De plus, vous ne devriez jamais faire de référence statique à votre application .. cela confond le système Android lorsqu'il veut effacer les applications inutilisées de leur exécution
TacB0sS
De plus, si le nom de l'application commence par un .something, il recherche la classe d'application sous ${packageName}.somethingafin que cela ne soit pas non plus la raison
TacB0sS
Voici quelques documents de référence si vous êtes curieux de connaître les différents objectifs de cette approche. github.com/codepath/android_guides/wiki/…
PGMacDesign
Le lien ne décrit pas votre approche. Je parie que ma carrière new MyApplication()n'est jamais appelée, sauf si vous utilisez une rom personnalisée foirée. Pas non plus où ils détiennent une référence statique à l'application
TacB0sS