Zbudowałem aplikację na Androida, która w jakiś sposób przejmuje lub zastępuje aplikację sterownika Lyft. Zasadniczo, ilekroć użytkownik pobierze moją aplikację na Androida, w jakiś sposób przejmuje jej aplikację Lyft. Nie otrzyma od Lyft żadnych próśb o jazdę (nawet w środku bardzo zajętego czasu). Następnie, gdy usuwa moją aplikację, działa ona znowu idealnie. Natychmiast znów jeździ. To najdziwniejsza rzecz, jaką kiedykolwiek widziałem. I to nie jest tylko przypadek, kiedy idzie zabijać swoje aplikacje, to dosłownie pokazuje moje logo aplikacji przejmującej aplikację sterownika Lyft.Zauważ, jak oryginalnie ma logo Lyft. Następnie, gdy moja aplikacja jest zainstalowana, ma moje logo aplikacji Lyft (moje logo jest tylko domyślnym logo Androida). Może nawet zabić moją aplikację, a jej aplikacja Lyft, a także aplikacja sterownika Uber nie działają! Jedynym sposobem, aby to naprawić, jest całkowite odinstalowanie mojej aplikacji i ponowne uruchomienie jej telefonu. Wtedy wszystko działa idealnie. Jednym ważnym elementem jest to, że cały czas śledzę lokalizację. Po prostu nie jestem pewien, od czego zacząć od tego błędu, więc wszelkie pomysły są pomocne. Dzięki! Użytkownik używa Galaxy Note 10+ z Androidem 10. Żaden z naszych innych użytkowników Androida nie powiedział nam o tym problemie. Wydaje się, że jest to wyjątkowa obudowa dla tego telefonu.
Oto wszystkie moje przejawy i zamiary:
<?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>
Context.registerReceiver()
lubPackageManager
. Zobacz: Jak utworzyć / wyłączyć filtr zamiarów według programowalnego sposobu?Odpowiedzi:
Wydaje mi się, że Twój problem dotyczy określonego
name
elementu w twoimManifest.xml
, konkretnie podapplication
tagiem.Masz swoją zdefiniowaną jako
.parse.parse
:, co wydaje mi się dość dziwne. Patrząc na ten link z parsowanej platformy, myślę, że to właśnie deklarujesz jako nazwę swojej aplikacji.Ten element nazwy, choć może wydawać się nieistotny, jest w rzeczywistości miejscem, w którym aplikacja generuje kontekst na poziomie aplikacji lub, w tym przypadku, w którym
Intents
wykrywane są elementy zewnętrzne .Jest bardzo prawdopodobne, że system nie potrafi rozróżnić, który z nich pociągnąć, i dlatego przyciąga twój nad Lyft, kiedy może.
Aby rozwiązać ten problem, po prostu zadeklaruj własną klasę, która rozszerza ją
Application
gdzieś w twoim projekcie w następujący sposób:Następnie zaktualizuj manifest, aby wyglądał tak:
I powinien działać poprawnie.
Jeśli nadal masz problemy, zaktualizuj swoje pytanie, dodając więcej informacji, a my możemy je zdiagnozować dalej.
źródło
${packageName}.something
więc to też nie powinno być przyczynąnew MyApplication()
nigdy się nie nazywa, chyba że uruchomisz niestandardowy ROM. Również nie tam, gdzie mają statyczne odniesienie do aplikacji