我的Android应用程序覆盖了Lyft应用程序?


13

我构建了一个Android应用程序,该应用程序以某种方式接管或覆盖了Lyft驱动程序应用程序。基本上,只要用户下载了我的Android应用程序,它就会以某种方式接管她的Lyft应用程序。她不会收到Lyft的任何乘车请求(即使是在非常忙碌的时间中间)。然后,当她删除我的应用程序时,它再次正常运行。她立即​​再次乘车。这是我见过的最奇怪的事情。这不仅仅是偶然的,当她去杀死她的应用程序时,它确实显示了我的应用程序徽标接管了Lyft驱动程序应用程序。附照片请注意,它最初具有Lyft徽标。然后,在安装我的应用程序时,它会带有Lyft应用程序的徽标(我的徽标只是默认的Android徽标)。她甚至可以杀死我的应用,而她的Lyft和Uber驱动程序也无法使用!修复它的唯一方法是完全卸载我的应用程序并重新启动她的手机。然后,一切正常。一个重要因素是我一直在跟踪位置。我只是不确定该从哪里开始,所以任何想法都对您有所帮助。谢谢!该用户在Android 10上使用了Galaxy Note 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
您的客户可能希望您将自己的名字显示出来...
Tenfour04

2
一些建议:1.请她安装您的应用程序。重新启动设备,然后在不打开您的应用程序的情况下开始使用Uber / Lyft,然后查看它是否正常运行。2.设备可能存在某种恶意软件/病毒。请她进行出厂重置,然后执行任务。
萨希尔·曼彻达

Answers:


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"
        .
        .
        .>
...

并且它应该正常运行。

如果您仍然遇到问题,请使用更多信息更新您的问题,我们可以进一步对其进行诊断。


android应用程序实例可以并且应该仅由android os创建。.getinstance应该在那里做什么?此外,您永远都不应静态地硬引用您的应用程序。当想要从其运行时清除未使用的应用程序时,它
会使

另外,如果应用程序名称以.something开头,它会在其下搜索应用程序类,${packageName}.something因此也不应该是原因
TacB0sS

如果您对这种方法的各种用途感到好奇,可以参考以下参考资料。github.com/codepath/android_guides/wiki/…–
PGMacDesign

该链接未描述您的方法。.我敢打赌,我的职业生涯是 new MyApplication(),除非您使用混乱的自定义rom,否则永远都不会调用它。也没有在那里有他们持有的静态参考应用
TacB0sS
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.