แอพ Android ของฉันกำลังจะเอาชนะแอป Lyft?


13

ฉันสร้างแอพ Android ที่ใช้แทนหรือควบคุมแอพ Lyft driver โดยพื้นฐานแล้วเมื่อใดก็ตามที่ผู้ใช้ดาวน์โหลดแอพ Android ของฉันมันจะเข้ามาแทนที่แอพ Lyft ของเธอ เธอจะไม่ได้รับการร้องขอการขับขี่ใด ๆ จาก Lyft (แม้ในช่วงกลางของช่วงเวลาที่ยุ่งที่สุด) จากนั้นเมื่อเธอลบแอพของฉันมันจะทำงานได้อย่างสมบูรณ์อีกครั้ง เธอขี่อีกครั้งทันที มันเป็นสิ่งที่แปลกประหลาดที่สุดที่ฉันเคยเห็น และนี่ไม่ได้เป็นแค่เรื่องบังเอิญเมื่อเธอไปฆ่าแอพของเธอมันแสดงให้เห็นว่าโลโก้แอพของฉันเข้ามาแทนที่แอพ Lyft driverภาพถ่ายที่แนบมาด้วยสังเกตเห็นว่ามันมีโลโก้ Lyft เดิม จากนั้นเมื่อติดตั้งแอพของฉันมันมีโลโก้ของฉันสำหรับแอพ Lyft (โลโก้ของฉันเป็นเพียงโลโก้เริ่มต้นของ Android) เธอยังสามารถฆ่าแอพของฉันและแอพ Lyft และ Uber driver ไม่ทำงาน! วิธีเดียวในการแก้ไขคือถอนการติดตั้งแอพของฉันและรีสตาร์ทโทรศัพท์ จากนั้นทุกอย่างทำงานได้อย่างสมบูรณ์ องค์ประกอบที่สำคัญอย่างหนึ่งคือฉันจะติดตามตำแหน่งตลอดเวลา ฉันไม่แน่ใจจริงๆว่าจะเริ่มจากจุดบกพร่องนี้ได้อย่างไร ขอบคุณ! ผู้ใช้ใช้ Galaxy Note 10+ กับ Android 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
เริ่มต้นด้วยการรวมคำถามตัวกรองเจตนาและตัวกรองเจตนาทั้งหมดของคุณไว้ด้วย
Morrison Chang

ตกลงฉันเพิ่มรายการ
Daniel Jones

1) สิ่งที่รุ่นของ Android / อุปกรณ์นี้เกิดขึ้น 2) คุณทำอะไรเป็นพิเศษกับโปรแกรมหรือContext.registerReceiver() PackageManagerดู: วิธีการสร้าง / ปิดใช้งานตัวกรองเจตนาโดยวิธีที่ตั้งโปรแกรมได้?
Morrison Chang

9
ลูกค้าของคุณอาจต้องการให้คุณตัดชื่อออก ...
Tenfour04

2
คำแนะนำ: 1. ขอให้เธอติดตั้งแอพของคุณ รีสตาร์ทอุปกรณ์แล้วเริ่มใช้ Uber / Lyft โดยไม่ต้องเปิดแอพของคุณและดูว่าใช้งานได้หรือไม่ 2. อุปกรณ์อาจมีมัลแวร์ / ไวรัสบางชนิด ขอให้เธอทำการรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานจากนั้นทำตามภารกิจ
Sahil Manchanda

คำตอบ:


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

จากนั้นให้อัปเดต Manifest ของคุณให้เป็นดังนี้:

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

และควรทำงานอย่างถูกต้อง

หากคุณยังคงมีปัญหาให้อัปเดตคำถามของคุณด้วยข้อมูลเพิ่มเติมและเราสามารถวินิจฉัยได้อีก


อินสแตนซ์แอพ android สามารถและควรถูกสร้างขึ้นโดย android os .. สิ่งที่ getinstance ควรทำคืออะไร? นอกจากนี้คุณไม่ควรอ้างอิงแอปพลิเคชันของคุณอย่างยากลำบาก .. มันทำให้ระบบ Android สับสนเมื่อต้องการล้างแอพที่ไม่ได้ใช้ออกจากรันไทม์ของพวกเขา
TacB0sS

นอกจากนี้หากชื่อแอปเริ่มต้นด้วย. บางสิ่งมันจะค้นหาคลาสแอพที่อยู่ด้านล่าง${packageName}.somethingเพื่อไม่ให้เป็นเช่นนั้น
TacB0sS

นี่คือข้อมูลอ้างอิงบางส่วนหากคุณสงสัยว่ามีจุดประสงค์หลายอย่างของวิธีการนี้ github.com/codepath/android_guides/wiki/…
PGMacDesign

ลิงค์ไม่ได้อธิบายวิธีการของคุณ .. ฉันจะเดิมพันอาชีพของฉันที่new MyApplication()ไม่เคยถูกเรียกว่าเว้นแต่คุณจะวิ่งเล่นบนรอมที่กำหนดเองที่ยุ่งเหยิง ยังไม่มีที่ที่พวกเขาถือการอ้างอิงแบบคงที่กับแอปพลิเคชัน
TacB0sS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.