การระงับป๊อปอัปการเข้าถึงอุปกรณ์ USB?

เมื่อเชื่อมต่ออุปกรณ์ USB กับแท็บเล็ต Android ป๊อปอัปจะปรากฏขึ้นเพื่อขออนุญาตจากผู้ใช้ ฉันต้องการระงับสิ่งนี้เนื่องจากลูกค้าไม่ต้องการ ฉันควรจะทำยังไงดี?

ในรหัส:

UsbManager.requestpermission(); 

ถูกเรียกเพื่อให้อุปกรณ์ USB เข้าถึงได้ชั่วคราว

สิ่งนี้จะพ่นป๊อปอัป ฉันจะระงับป๊อปอัปหรือให้สิทธิ์การเข้าถึงแก่ผู้ใช้ตามค่าเริ่มต้นได้อย่างไร


person Community    schedule 12.09.2012    source แหล่งที่มา


คำตอบ (2)


เมื่อคุณขออนุญาตภายในแอปของคุณ ดูเหมือนว่าช่องทำเครื่องหมาย "ใช้เป็นค่าเริ่มต้นสำหรับอุปกรณ์ USB นี้" จะไม่ทำอะไรเลย (ฉันไม่แน่ใจว่าทำไมช่องทำเครื่องหมายนี้ถึงปรากฏในป๊อปอัปนี้ด้วย

คุณควรลงทะเบียนตัวจัดการเจตนาสำหรับกิจกรรมของคุณในรายการแทน:

<activity 
    ...
    ...
    >
    <intent-filter>
        <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
    </intent-filter>
    <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/usb_device_filter" />  
</activity>

คุณต้องสร้างไฟล์ตัวกรองในทรัพยากร xml ของคุณ เช่น res/xml/usb_device_filter:

<?xml version="1.0" encoding="utf-8"?>

<resources>
    <usb-device vendor-id="26214" product-id="26214" />
</resources>

รหัสผู้ขายและรหัสผลิตภัณฑ์ที่นี่จะต้องระบุเป็นทศนิยม โดยเหนือทั้ง VID และ PID คือ 0x6666

สิ่งที่ฉันให้ไว้ข้างต้นใช้ได้กับอุปกรณ์เสริม USB ด้วย (นั่นคือโดยที่อุปกรณ์เสริมคือโฮสต์ USB และ Android เป็นอุปกรณ์) - ในกรณีนั้นตัวกรองเจตนาควรลงทะเบียน

<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />

และคุณต้องรวมตัวกรองข้อมูลเมตาในลักษณะเดียวกันทุกประการ

ดู http://developer.android.com/guide/topics/connectivity/usb/accessory.html และค้นหาส่วน "การใช้ตัวกรองเจตนา"

แก้ไข

สรุป - หากคุณลงทะเบียนตัวกรองเจตนากับกิจกรรมของคุณ หน้าต่างการอนุญาต USB จะปรากฏขึ้นทันทีเมื่อเชื่อมต่ออุปกรณ์/อุปกรณ์เสริม USB หากผู้ใช้ทำเครื่องหมายที่ช่อง "ใช้เป็นค่าเริ่มต้นสำหรับอุปกรณ์ USB นี้" จากนั้นให้อนุญาต สิ่งนี้จะถูกจดจำและกล่องโต้ตอบการอนุญาตจะไม่แสดงอีก (เว้นแต่ว่าแอปจะถูกถอนการติดตั้งหรือผู้ใช้ล้างการดำเนินการเริ่มต้นจากตัวจัดการแอปพลิเคชัน ).

ฉันได้วางโครงการตัวอย่างเล็กๆ น้อยๆ ที่แย่มากและใช้งานได้ไว้ที่นี่:

http://www.locusia.com/examples/permissionTest.zip

คุณจะต้องแก้ไข res/xml/usb_device_filter.xml แต่มิฉะนั้นจะช่วยให้คุณสามารถทดสอบได้อย่างรวดเร็ว

สำหรับบริการ...

ดูเหมือนว่าบริการไม่สามารถรับจุดประสงค์ของ USB ได้ ฉันได้รับสิ่งนี้โดยทำกิจกรรมที่ซ่อนอยู่ซึ่งจะเผยแพร่ความตั้งใจอีกครั้ง

ฉันกำหนดไว้ในรายการของฉันดังนี้:

<activity
    android:name=".activities.UsbEventReceiverActivity"
    android:label="YOUR APPLICATION NAME - This appears in the permission popup"
    android:theme="@style/Theme.Transparent" 
    android:noHistory="true"
    android:excludeFromRecents="true"
    android:taskAffinity="com.example.taskAffinityUsbEventReceiver"
    android:process=":UsbEventReceiverActivityProcess"
    android:exported="false"
    >    
    <intent-filter>
        <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
    </intent-filter>
    <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/usb_device_filter" />  
</activity>

(ฉันมีรูปแบบงาน/กระบวนการที่ซับซ้อนในบริการของฉัน YMMV ในพื้นที่นั้น)

ฉันกำหนดกิจกรรมเช่นนี้:

public class UsbEventReceiverActivity extends Activity
{   
    public static final String ACTION_USB_DEVICE_ATTACHED = "com.example.ACTION_USB_DEVICE_ATTACHED";
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void onResume()
    {
        super.onResume();

        Intent intent = getIntent();
        if (intent != null)
        {
            if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED))
            {
                Parcelable usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

                // Create a new intent and put the usb device in as an extra
                Intent broadcastIntent = new Intent(ACTION_USB_DEVICE_ATTACHED);
                broadcastIntent.putExtra(UsbManager.EXTRA_DEVICE, usbDevice);

                // Broadcast this event so we can receive it
                sendBroadcast(broadcastIntent);
            }
        }

        // Close the activity
        finish();
    }
}

และชิ้นส่วนสุดท้ายของปริศนา ธีมโปร่งใส (ฉันไม่แน่ใจ แต่คุณอาจใช้ธีมโปร่งแสงในตัวของ Android ได้) - res/values/styles.xml:

<?xml version="1.0" encoding="utf-8"?>  
    <resources>  
    <style name="Theme.Transparent" parent="android:Theme">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:windowAnimationStyle">@null</item>
    </style>  
</resources>  
person Wayne Uroda    schedule 01.03.2013
comment
สำหรับโหมดโฮสต์ USB ข้อมูลนี้จะได้รับใน developer.android.com/guide /topics/connectivity/usb/host.html ส่วนการทำงานกับอุปกรณ์ในหน้านั้นระบุว่าแอปพลิเคชันต้อง 2. ขออนุญาตจากผู้ใช้เพื่อเชื่อมต่อกับอุปกรณ์ USB หากยังไม่ได้รับ คำถามของ OP (และฉันด้วย!) คือจะระบุได้อย่างไรว่าได้รับอนุญาตแล้ว เพื่อไม่ให้ป๊อปอัปเกิดขึ้นและแอปสามารถใช้อุปกรณ์ได้ทันที - person kbro; 02.03.2013
comment
@kbro เมื่อคุณบอกว่าได้รับอนุญาตแล้วคุณหมายถึงอะไรกันแน่? หากได้รับสิทธิ์อนุญาตแล้ว ฟังก์ชัน UsbManger.hasPermission() (ส่งอุปกรณ์เสริมหรืออุปกรณ์) จะกลับมาเป็น "จริง" และคุณก็สามารถเปิดและใช้อุปกรณ์เสริม/อุปกรณ์ได้ ไม่มีทางที่จะระงับป๊อปอัปได้อย่างสมบูรณ์ โดยจะต้องแสดงอย่างน้อยหนึ่งครั้ง และผู้ใช้จะต้องทำเครื่องหมายในช่องเพื่อใช้เป็นค่าเริ่มต้นสำหรับอุปกรณ์นี้ และกด yes/ok/accept - โปรดทราบว่าคุณต้องลงทะเบียนความตั้งใจ- กรองกับกิจกรรมเพื่อการอนุญาตที่จะจดจำกับแอปพลิเคชันของคุณ - person Wayne Uroda; 05.03.2013
comment
ฉันเพิ่งเพิ่มอีกย่อหน้าในคำตอบของฉันด้านบนเพราะอาจจะไม่ชัดเจนก่อนหน้านี้ - person Wayne Uroda; 05.03.2013
comment
โอเค ฉันเข้าใจว่า Android ต้องถามอย่างน้อยหนึ่งครั้ง แต่ฉันไม่สามารถทำให้มันเกิดขึ้นได้ - มันจะถามทุกครั้งที่ถอดอุปกรณ์และใส่กลับเข้าไปใหม่ ฉันคิดว่าคุณกำลังพูดถึงเหตุผลนั้นเป็นเพราะแอปเรียก RequestPermission ฉันต้องตอบกลับเฉพาะตัวกรองเหตุการณ์เท่านั้น - person kbro; 08.03.2013
comment
แต่นั่นไม่ได้ตอบทุกอย่างนักเพราะดูเหมือนว่าจะขัดแย้งกับส่วนการใช้ตัวกรองเจตนาใน developer.android.com/guide/topics/connectivity/usb/host.html - หากผู้ใช้ยอมรับ แอปพลิเคชันของคุณจะได้รับอนุญาตให้เข้าถึงอุปกรณ์โดยอัตโนมัติจนกว่าอุปกรณ์จะถูกตัดการเชื่อมต่อ ค่อนข้างชัดเจนเกี่ยวกับการอนุญาตที่สูญหายเมื่ออุปกรณ์ถูกตัดการเชื่อมต่อ อย่างไรก็ตาม หากคุณอ่านส่วนนั้นอย่างใกล้ชิด มันไม่ได้กล่าวถึงกล่องกาเครื่องหมาย use by default ดังนั้นเวทมนตร์ชิ้นสุดท้ายที่หายไปจะทำให้งานนี้เป็นไปตามที่ฉันต้องการใช่ไหม - person kbro; 08.03.2013
comment
โดยสรุป ถ้าฉันทำทุกอย่างตรงตามที่คุณบอก มันจะใช้งานได้หรือไม่ โดยถ้าฉันเสียบอุปกรณ์ USB หนึ่งครั้ง ก่อนที่แอปจะทำงาน ให้ทำเครื่องหมายที่ช่องทำเครื่องหมายแล้วแตะตกลง จากนั้นฉันจะไม่ถูกขออนุญาตอีกเลย ผ่านการถอดอุปกรณ์ USB และการรีบูตแท็บเล็ต จนกระทั่งแอปได้รับการติดตั้งใหม่หรืออัปเกรด - person kbro; 08.03.2013
comment
ใช่ ฉันได้ทดสอบบน Galaxy S3 (Android 4.1.1), Galaxy Note (4.0.4) และ Nexus 7 (4.2.2) - การอนุญาตจะต้องได้รับการยอมรับเพียงครั้งเดียวเท่านั้นหากทำเครื่องหมายในช่องทำเครื่องหมาย - และนี่จะเป็น จำได้แม้จะผ่านการรีบูต/รอบการทำงานก็ตาม - person Wayne Uroda; 08.03.2013
comment
@kbro ฉันแก้ไขคำตอบของฉัน ฉันจัดทำโครงการสาธิตขนาดเล็กมากซึ่งจะให้คุณทดสอบแนวคิดก่อนที่คุณจะปรับโครงสร้างโค้ดของคุณใหม่ - person Wayne Uroda; 08.03.2013
comment
คุณช่วยเหลือและอดทนได้อย่างน่าอัศจรรย์ ฉันจะให้พวก SW ของฉันตรวจดูเรื่องนี้ - person kbro; 08.03.2013
comment
ไม่เป็นไร สถานที่ส่วนใหญ่ที่ฉันสามารถช่วยได้ก็มีผู้คนมากมายตอบคำตอบแล้ว ดังนั้นเมื่อฉันเจอสิ่งที่ฉันรู้ ฉันจะพยายามช่วยเหลือให้มากที่สุดเท่าที่จะทำได้ :) - person Wayne Uroda; 08.03.2013
comment
โอเค แอปของคุณทำงานตามที่โฆษณาไว้ แต่คุณกำลังใช้งานกิจกรรมโดยที่โค้ดของฉันเป็นบริการ และใส่ตัวกรองเจตนาไว้ในส่วน ‹บริการ› ... ‹/service› ของไฟล์ AndroidManifect.xml ไม่ได้ ดูเหมือนจะไม่มีผลใดๆ ข้อความที่ฉันได้รับแตกต่างออกไป - แอปทดสอบของคุณได้รับ Open MainActivity เมื่อเชื่อมต่ออุปกรณ์ USB นี้ ในขณะที่ของฉันบอกว่าอนุญาตให้แอป APPNAME เข้าถึงอุปกรณ์ USB หรือไม่ - person kbro; 10.03.2013
comment
ดูที่ stackoverflow.com/questions/13466103/ คำตอบแนะนำให้ใช้ UMS_CONNECTED และ UMS_DISCONNECTED เจตนาแทน นั่นจะช่วยในกรณีของฉันได้ไหม? - person kbro; 10.03.2013
comment
โปรดดูข้อมูลใหม่ในตอนท้ายของคำตอบของฉัน - ฉันหวังว่าจะได้ผลสำหรับคุณ - person Wayne Uroda; 10.03.2013
comment
ดูเป็นไปได้. ขอขอบคุณอีกครั้งสำหรับความพยายามของคุณ ฉันจะแจ้งให้คุณทราบว่าเราจะไปต่อได้อย่างไร! - person kbro; 10.03.2013
comment
การให้สิทธิ์อัตโนมัติทำงานอย่างไรในกรณีนี้ - บริการได้รับเนื่องจากเป็นส่วนหนึ่งของ APK เดียวกันกับกิจกรรมหรือไม่ - person kbro; 10.03.2013
comment
ฉันไม่แน่ใจ - มีการอนุญาตแอปตามแอปหรือไม่ Android ไม่มีแนวคิดของแอปนอกเหนือจากทุกสิ่งที่กำหนดไว้ในรายการเดียวกัน - ถ้าฉันบอกว่าฉันรู้ว่าฉันแค่เดาเท่านั้น! สิ่งที่ฉันรู้ก็คือมันใช้งานได้ แม้ว่าบริการและกิจกรรมจะทำงานเป็นงานและกระบวนการที่แยกจากกันก็ตาม - person Wayne Uroda; 10.03.2013
comment
ฉันเดาว่านั่นคือสิ่งที่ฉันหมายถึงโดยส่วนหนึ่งของ APK เดียวกัน ดังนั้นหากบริการและกิจกรรมถูกกำหนดไว้ใน AndroidManifest.xml เดียวกัน (และฉันเดาว่ามีเพียงหนึ่งในนั้นในไฟล์ APK) การให้สิทธิ์อัตโนมัติก็ใช้งานได้ น่ารัก!! ตอนนี้ถ้าฉันทำได้เพียงให้ StackOverflow ส่งอีเมลถึงฉันเมื่อมีการโพสต์ความคิดเห็นใหม่ฉันก็คงจะอยู่ในสวรรค์ :-) - person kbro; 10.03.2013
comment
อ๋อ-เจอแล้ว ใต้ StackExchange ทางด้านซ้ายของแถบที่ด้านบนของหน้า ไม่เกี่ยวข้องกับโปรไฟล์ของฉัน - ไปคิดซะ! - person kbro; 10.03.2013
comment
@WayneUroda ฉันได้ลองตัวอย่างของคุณแล้วและฉันประสบความสำเร็จในการรวมเข้ากับโค้ดของฉันและกล่องโต้ตอบ USB ไม่ปรากฏขึ้นเป็นครั้งที่สอง แต่นี่เป็นปัญหาอีกอย่างหนึ่งกับกิจกรรม กิจกรรมที่ฉันทำให้ IntentFilter of USB Attached เริ่มทำงานหากฉันอยู่ในที่อื่น หน้าจอ. ที่นี่ฉันไม่ต้องการเริ่มสิ่งนั้นถ้าฉันทำกิจกรรมอื่น - person Nikunj Patel; 09.01.2014
comment
@NikPatel ตัวอย่างของฉันครอบคลุมถึงสิ่งนี้ - เพียงใช้คำแนะนำสำหรับบริการ - สิ่งนี้จะสร้างกิจกรรมที่ซ่อนอยู่ (ไม่แสดงในประวัติไม่ปรากฏบนหน้าจอ) ซึ่ง finished ทันทีที่เริ่มต้น - person Wayne Uroda; 13.01.2014
comment
@WayneUroda คุณช่วยอธิบายอย่างละเอียดได้ไหม - person Nikunj Patel; 13.01.2014
comment
@NikPatel ทำกิจกรรมที่ซ่อนอยู่ - นั่นคือกิจกรรมที่ไม่แสดงในประวัติ (android:noHistory="true" android:excludeFromRecents="true" ในรายการของคุณ) จากนั้นมีกิจกรรม finish เองในฟังก์ชัน onresume (เพื่อให้กิจกรรมนั้นไม่เคยใช้งานอยู่ / อยู่ด้านบน) นอกจากนี้ คุณยังสามารถกำหนดธีมโปร่งใสให้กับกิจกรรมโดยไม่มีภาพเคลื่อนไหวได้ เพื่อที่ระบบปฏิบัติการจะไม่สร้างการเปลี่ยนผ่าน ขึ้นอยู่กับคุณว่าคุณต้องการให้กิจกรรมดำเนินการอย่างไร - กิจกรรมอาจสร้างเธรดใหม่ ถ่ายทอดเจตนาไปยังส่วนอื่นของแอปของคุณ หรืออย่างอื่นทั้งหมด - person Wayne Uroda; 13.01.2014
comment
@WayneUroda ฉันจะพยายามเหมือนเดิมและแจ้งให้คุณทราบขอบคุณ :) - person Nikunj Patel; 13.01.2014
comment
นี่เป็นปัญหาหนึ่งของแอปพลิเคชัน ฉันต้องการแสดงกล่องโต้ตอบเมื่อพิมพ์ออกมา ดังนั้นในความเป็นจริงเมื่อฉันพิมพ์ออกมา กล่องโต้ตอบของฉันควรจะมองเห็นได้ และเมื่อฉันทำกิจกรรมอื่นและเสียบสาย usb ก็ไม่ควรทำให้เกิดผลกระทบใดๆ... หลังจากลองตัวอย่างนี้แล้ว ฉันก็ยังทำไม่สำเร็จ คุณช่วยฉันเรื่องนี้ได้ไหม - person Nikunj Patel; 20.01.2014
comment
@WayneUroda: เมื่อการเชื่อมต่อ usb ระหว่าง android และอุปกรณ์ usb ถูกสร้างขึ้นการเชื่อมต่อนี้จะคงอยู่ตลอดไปหรือไม่ ฉันทดสอบโค้ดของฉันโดยเริ่มต้นการเชื่อมต่อที่ประสบความสำเร็จและคงไว้อย่างนั้นข้ามคืน วันถัดไปฉันพบว่าฉันไม่สามารถส่งข้อมูลใดๆ ผ่านการเชื่อมต่อ usb ได้ ฉันถือว่าการเชื่อมต่อขาดหายไปในบางครั้ง เป็นเรื่องปกติหรือจำเป็นต้องทำ เพื่อส่งสัญญาณจำลองใด ๆ เป็นระยะ ๆ ระหว่างอุปกรณ์ android และ usb เพื่อให้การเชื่อมต่ออยู่ในสถานะสด/ใช้งานอยู่ ? - person Basher51; 03.07.2014
comment
@WayneUroda: นอกจากนี้ในกรณีของฉันฉันมีเครื่องรับออกอากาศแทนกิจกรรม / บริการซึ่งฟัง usb ที่แนบมา / เจตนาการอนุญาตจนถึงตอนนี้ทุกอย่างทำงานได้ดีและผู้รับของฉันได้รับความตั้งใจเหล่านั้นในการรีบูตอุปกรณ์ฉันแค่ต้องการ เพื่อปิดการใช้งานป๊อปอัพการอนุญาต usb ที่เกิดขึ้นซ้ำ ฉันจำเป็นต้องใช้กิจกรรมโปร่งใสนั้นสำหรับกรณีของฉันหรือไม่? นอกจากนี้ป๊อปอัปนี้จะเกิดขึ้นอีกครั้งเมื่อมีการอัปเดตแอปหรือไม่ กรุณาช่วยฉันด้วยเพราะฉันใกล้จะละลายแล้วขอบคุณ - person Basher51; 03.07.2014
comment
ขอบคุณ เกือบจะได้ผลสำหรับฉัน อย่างไรก็ตาม เพื่อเริ่มบริการ ฉันต้องทำให้ Intent ชัดเจน (ระบุ this, null, MyService.class เป็นอาร์กิวเมนต์เพิ่มเติม) และใช้ startService() แทน sendBroadcast() จากนั้นบริการจึงจะเริ่มทำงานจริงเท่านั้น - person user149408; 29.05.2017
comment
ฉันใช้กิจกรรมที่มองไม่เห็นนี้มาสองสามปีแล้ว แต่ตอนนี้มีปัญหาหนึ่งเกิดขึ้นว่าอุปกรณ์ของ usb_device_filter.xml ใช้สำหรับหลายแอป จากนั้นเมื่อฉันเสียบ USB ตัวเลือกกิจกรรมจะปรากฏขึ้น ฉันต้องเลือกกิจกรรมที่มองไม่เห็น ไม่เช่นนั้นจะไม่ได้รับสิทธิ์ล่วงหน้า ดังนั้นฉันจึงอยากทราบว่าฉันสามารถใช้ตัวรับแต่ไม่สามารถทำกิจกรรมที่มองไม่เห็นได้หรือไม่ (เรารู้อยู่แล้วว่าบริการไม่ทำงาน) ตัวรับสัญญาณที่ประกาศในรายการสามารถเปิดใช้งานได้จากปลั๊กอินอุปกรณ์ usb (กำหนดบน usb_device_filter.xml) ได้หรือไม่ - person Yeung; 30.01.2018
comment
ฉันได้ติดตามสิ่งนี้แล้วและใช้รหัสผู้ขายและรหัสผลิตภัณฑ์ที่ถูกต้อง แต่ทุกครั้งที่ถอดอุปกรณ์ USB (Arduino Teensy) ออกจากโทรศัพท์ แอปจะต้องได้รับอนุญาตอีกครั้ง มีบางอย่างที่ฉันขาดหายไป สำหรับรายละเอียดเพิ่มเติม ฉันเริ่มคำถามใหม่: stackoverflow.com/q/54298521 - person Wowsk; 24.01.2019
comment
สำหรับฉันมันใช้งานได้ แต่ถ้าอุปกรณ์รีสตาร์ทกล่องโต้ตอบการยืนยันก็จะปรากฏขึ้น ฉันได้ติดตั้งแอปลงในโฟลเดอร์ System/priv-app แล้ว - person Jemo Mgebrishvili; 12.03.2019
comment
@WayneUroda จะจำการอนุญาตหลังจากรีบูตได้อย่างไร - person user924; 22.08.2019
comment
@WayneUroda สวัสดี ฉันกำลังใช้ส่วนที่ฉันขออนุญาต USB สำหรับอุปกรณ์ไบโอเมตริกซ์ ตอนนี้ ถ้าฉันใช้รหัสของคุณ ฉันจะต้องส่งตัวกรองเจตนาไปยังกิจกรรมของมัน และนั่นจะนำฉันไปสู่กิจกรรมนั้นโดยเฉพาะหากฉันทำตามขั้นตอนของคุณในกล่องโต้ตอบการอนุญาต โปรดแนะนำฉันเกี่ยวกับวิธีการทำสิ่งนั้นในส่วนย่อย - person Priyanka Alachiya; 19.03.2020
comment
fyi: คุณสามารถค้นหารหัสผู้ขายและรหัสผลิตภัณฑ์ได้จาก adb logcat เพียงเชื่อมต่ออุปกรณ์และตรวจสอบที่นั่น - person nexus; 05.04.2020

มาช้าแต่ก็หวังว่าจะช่วยได้ เอกสาร Android อย่างเป็นทางการระบุว่า "เมื่อผู้ใช้เชื่อมต่ออุปกรณ์ที่ตรงกับอุปกรณ์ของคุณ ระบบจะแสดงกล่องโต้ตอบถามว่าต้องการเริ่มแอปพลิเคชันของคุณหรือไม่ หากผู้ใช้ยอมรับ แอปพลิเคชันของคุณจะได้รับอนุญาตให้เข้าถึงอุปกรณ์โดยอัตโนมัติจนกว่าอุปกรณ์จะถูกตัดการเชื่อมต่อ" หากคุณทำเครื่องหมายที่ช่องเพื่อจดจำอุปกรณ์ จะมีการอนุญาตจนกว่าการถอนการติดตั้งแอปหรือข้อมูลจะถูกลบผ่านตัวจัดการแอป

ดังนั้นคุณต้องทำ:

  1. เพิ่ม intent-filter ตามที่ Wayne พูด (และลบทั้งหมดเกี่ยวกับสิทธิ์ในกิจกรรมหลักของคุณ)
  2. ติดตั้งแอปและปิด
  3. ถอดปลั๊กและเสียบ usb ของคุณ
  4. ยอมรับการอนุญาตและทำเครื่องหมายในช่องเพื่อจดจำอุปกรณ์
  5. สนุก.
person jlbofh    schedule 07.05.2019
comment
คุณมีข้อเสนอแนะหรือไม่หากคุณคาดหวังว่าจะต้องเสียบสาย USB ไว้แล้วเมื่อเปิดเครื่อง? ฉันได้นำแนวทางนี้ไปใช้ และจะใช้งานได้ดีหากฉันเสียบสาย USB หลังจากเปิดเครื่อง แต่ในกรณีของฉัน ฉันคาดว่าสายเคเบิลจะยังคงเสียบอยู่ตลอดเวลา - person Ryan Tensmeyer; 19.05.2021