Meine Android App überschreibt die Lyft App?

13

Ich habe eine Android-App erstellt, die die Lyft-Treiber-App irgendwie übernimmt oder überschreibt. Grundsätzlich übernimmt eine Benutzerin, die meine Android-App heruntergeladen hat, irgendwie ihre Lyft-App. Sie wird keine Fahranfragen von Lyft erhalten (selbst mitten in einer sehr geschäftigen Zeit). Wenn sie dann meine App löscht, funktioniert sie wieder perfekt. Sie bekommt sofort wieder Fahrten. Es ist das Seltsamste, was ich je gesehen habe. Und das ist kein Zufall, wenn sie ihre Apps tötet, zeigt es buchstäblich, dass mein App-Logo die Lyft-Treiber-App übernimmt.Foto beigefügtBeachten Sie, wie ursprünglich das Lyft-Logo ist. Wenn meine App installiert ist, hat sie mein Logo für die Lyft-App (mein Logo ist nur das Standard-Android-Logo). Sie kann sogar meine App töten und ihre Lyft- und auch Uber-Treiber-App funktionieren nicht! Die einzige Möglichkeit, dies zu beheben, besteht darin, meine App vollständig zu deinstallieren und ihr Telefon neu zu starten. Dann funktioniert alles perfekt. Ein wichtiges Element ist, dass ich den Ort ständig verfolge. Ich bin mir einfach nicht sicher, wo ich überhaupt mit diesem Fehler anfangen soll, daher sind alle Ideen hilfreich. Vielen Dank! Der Benutzer verwendet ein Galaxy Note 10+ mit Android 10. Keiner unserer anderen Android-Benutzer hat uns über dieses Problem informiert. Es scheint ein einzigartiger Fall für dieses Telefon zu sein.

Hier sind alle meine Manifestationen und Absichten:

    <?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
quelle
3
Beginnen Sie, indem Sie Ihr Manifest und alle Absichtsfilter in die Frage aufnehmen.
Morrison Chang
Okay, ich habe das Manifest hinzugefügt.
Daniel Jones
1) In welchen Versionen von Android / Geräten tritt dies auf? 2) Tun Sie programmgesteuert etwas Besonderes mit Context.registerReceiver()oder PackageManager. Siehe: So erstellen / deaktivieren Sie den Intent-Filter auf programmierbare Weise?
Morrison Chang
9
Ihr Kunde könnte es vorziehen, wenn Sie seinen Namen herausschneiden ...
Tenfour04
2
Einige Vorschläge: 1. Bitten Sie sie, Ihre App zu installieren. Starten Sie das Gerät neu und starten Sie Uber / Lyft, ohne Ihre App zu öffnen. Überprüfen Sie, ob dies funktioniert. 2. Das Gerät verfügt möglicherweise über Malware / Viren. Bitten Sie sie, einen Werksreset durchzuführen und die Aufgabe dann auszuführen.
Sahil Manchanda

Antworten:

2

Ich glaube, Ihr Problem hängt mit Ihrem definierten nameElement in Ihrem Manifest.xml, insbesondere dem unter dem applicationTag, zusammen.

Sie haben Ihre definiert als:, .parse.parsewas mir ziemlich seltsam erscheint. Wenn Sie sich diesen Link von der Analyseplattform aus ansehen, ist dies meiner Meinung nach der Name Ihrer App.

Dieses Namenselement ist zwar unwichtig, aber tatsächlich generiert Ihre Anwendung den Kontext auf Anwendungsebene aus oder in diesem Fall wird das externe Element erkannt Intents.

Es ist sehr wahrscheinlich, dass das System nicht unterscheiden kann, welches gezogen werden soll, und es zieht daher Ihr System über Lyft, wenn es kann.

Um dies zu beheben, deklarieren Sie einfach Ihre eigene Klasse, die die ApplicationKlasse irgendwo in Ihrem Projekt wie folgt erweitert:

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

Aktualisieren Sie dann einfach Ihr Manifest so, dass es so aussieht:

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

Und es sollte richtig funktionieren.

Wenn Sie immer noch Probleme haben, aktualisieren Sie Ihre Frage mit weiteren Informationen, und wir können sie weiter diagnostizieren.

PGMacDesign
quelle
Die Android App Instanz kann und sollte nur von Android OS erstellt werden. Was soll diese Instanz dort tun? Außerdem sollten Sie niemals statisch hart auf Ihre Anwendung verweisen. Es verwirrt das Android-System, wenn es nicht verwendete Apps aus ihrer Laufzeit
löschen
Wenn der App-Name mit einer .something beginnt, sucht er nach der App-Klasse unter, ${packageName}.somethingsodass dies auch nicht der Grund sein sollte
TacB0sS
Hier finden Sie Referenzmaterial, wenn Sie neugierig auf die verschiedenen Zwecke dieses Ansatzes sind. github.com/codepath/android_guides/wiki/…
PGMacDesign
Der Link beschreibt nicht Ihren Ansatz. Ich wette, meine Karriere new MyApplication()wird nie aufgerufen, es sei denn, Sie laufen auf einem durcheinandergebrachten benutzerdefinierten Rom. Auch nirgends dort, wo sie einen statischen Verweis auf die Anwendung enthalten
TacB0sS