ใน Android 6 จะปฏิเสธการอนุญาตให้แอปเข้าถึงเครือข่ายได้อย่างไร


30

ใน Android 6 ผู้ใช้มี (ในที่สุด!) ความเป็นไปได้ของการอนุมัติหรือปฏิเสธสิทธิ์เฉพาะสำหรับแอป

อย่างไรก็ตามฉันไม่สามารถหาวิธีอนุมัติหรือปฏิเสธการเข้าถึงเครือข่ายไม่ว่าจะผ่าน Wi-Fi หรือการเชื่อมต่อข้อมูลมือถือ การอนุญาตที่เกี่ยวข้องจะปรากฏใน "ความสามารถของแอปอื่น ๆ " และเป็นข้อมูลเท่านั้น - เห็นได้ชัดว่าไม่มีวิธีการเปลี่ยน

นี่คือตัวอย่างของแอพ Chess Free:

ภาพหน้าจอ


4
คุณทำไม่ได้ ให้ฉันค้นหาแหล่งที่เชื่อถือได้ แต่คุณไม่สามารถทำได้เพราะจะส่งผลเสียต่อผลประโยชน์ของ Google เป็นจำนวนมาก (โฆษณานั่นคือ) แก้ไข: คุณจะพบที่น่าสนใจบทความนี้: androidpolice.com/2015/06/06/...
จ้าว

คำตอบ:


27

คุณจะไม่สามารถประสบความสำเร็จผ่านกลไกดั้งเดิมของ Android

โคดี้ทูมส์ที่ตำรวจ Android ได้ชี้ให้เห็นได้เป็นอย่างดีนี้ออกมาในบทความ: Android M จะไม่ขอให้สำหรับผู้ใช้สิทธิ์ในการใช้อินเทอร์เน็ตและที่น่าจะโอเค

ในส่วนการอนุญาตปกติและอันตรายของภาพรวมการอนุญาตเอกสาร Google ได้ระบุไว้:

การอนุญาตแบ่งออกเป็นหลายระดับการป้องกัน

การป้องกันมีสองระดับที่มีผลต่อแอปของบุคคลที่สาม: สิทธิ์ปกติและอันตราย

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

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

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

(เหมืองเน้น)

น่าประหลาดใจหรือไม่สิทธิ์ต่อไปนี้อยู่ในรายการสิทธิ์ปกติ :

  • CHANGE_NETWORK_STATE - อนุญาตให้แอปพลิเคชันเปลี่ยนสถานะการเชื่อมต่อเครือข่าย - เช่นข้อมูลมือถือ
  • CHANGE_WIFI_STATE - อนุญาตให้แอปพลิเคชั่นเปลี่ยนสถานะการเชื่อมต่อ Wi-Fi
  • อินเทอร์เน็ต - อนุญาตให้แอปพลิเคชันเปิดซ็อกเก็ตเครือข่าย

ถ้าที่ไม่พอเพียง, เช็คเอาสิทธิ์จัดการโดย AppOps ที่นี่ หากคุณไม่พบรายการการอนุญาตของคุณในนั้นคุณจะไม่สามารถทำอะไรกับมันได้ใน GUI

เนื่องจากวิธีการอื่น ๆ ได้รับการครอบคลุมอย่างกว้างขวางในไซต์นี้แล้วให้อ้างอิง:


12
ขอบคุณสำหรับคำตอบ. มันน่าผิดหวังเมื่อฟีเจอร์พิการไม่ได้เกิดจากความเป็นไปไม่ได้ทางเทคนิค แต่เป็นเพราะเหตุผลทางการตลาด
dr01

25

คุณสามารถใช้NetGuard (ดูรายการไฟร์วอลล์อินเทอร์เน็ตของฉันสำหรับทางเลือกอื่น ๆ ) ซึ่งทำงานได้โดยไม่ต้องรูทและช่วยให้คุณสามารถบล็อกการเข้าถึงอินเทอร์เน็ตสำหรับแอพที่เลือก (WiFi หรือข้อมูลมือถือ มันมาจาก dev ของXPrivacyดังนั้นจึงต้องดี;)

Netguard Netguard Netguard
NetGuard (แหล่งที่มา: Google Play ; คลิกที่ภาพเพื่อดูภาพใหญ่)

NetGuardเปิดแหล่งที่มาเพื่อให้คุณสามารถค้นหาได้ที่ F-Droid

อัปเดต:โปรดทราบว่า Netguard เวอร์ชันล่าสุดรวมถึงโฆษณา Google และ Firebase Analytics - สองสิ่งที่ IMHO ไม่มีธุรกิจในแอปพลิเคชั่นไฟร์วอลล์ repo อย่างเป็นทางการ (ยังมีอยู่ในเหมืองพร้อมคำเตือนที่เหมาะสม)


1
ตัวแปร F-Droid ของ NetGuard จริง ๆ แล้วได้เพิ่มฟังก์ชันการทำงานที่นอกเหนือจากที่อนุญาตใน Play Store
andDevW

สามารถบล็อกโฆษณาในแอปได้หรือไม่
ผู้เล่นอมตะ

1
@ImmortalPlayer หากแอปถูกปฏิเสธการเข้าถึงเครือข่ายก็ไม่สามารถโหลดโฆษณาได้ ดังนั้นคำตอบก็คือ "ใช่"
Izzy


4

หากคุณมีสิทธิ์เข้าถึงรูทคุณสามารถใช้:

ฉันได้อัปเดตอุปกรณ์เป็น Android 6.0.1 และจนถึงตอนนี้ทั้งคู่ดูเหมือนจะใช้งานได้


3

ไม่สามารถปฏิเสธการเข้าถึงอินเทอร์เน็ตสำหรับแต่ละแอปใน Android ได้ โฆษณาเป็นแหล่งรายได้หลักของ Google

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

ติดตั้งOpera Maxจาก Play Store มันสมบูรณ์ฟรีและใช้งานง่าย ไม่จำเป็นต้องรูท


อัปเดต : ไม่เป็นแฟนของ Opera Max อีกต่อไปหลังจากที่พวกเขาเริ่มแสดงโฆษณามากเกินไป
NVZ

3

เนื่องจากบางเหตุการณ์ที่เกิดขึ้นเมื่อเร็ว ๆนี้ฉันต้องการปรับปรุงคำถามนี้โดยแนะนำTriangleโดย Google ได้รับมันในAPKMirrorหรือAPKPureและติดตั้งกับADB

นี่คือคุณสมบัติที่สำคัญบางอย่าง

ใช้ข้อมูลมือถือ ขออนุญาตให้ข้อมูลสำหรับแอปที่ถูกบล็อก ปิดเมื่อใช้ Wi-Fi บล็อกทุกอย่างตามค่าเริ่มต้น

ไม่ใช่ VPN มันบล็อกการเข้าถึงอินเทอร์เน็ตของแอพของคุณ คิดว่าเป็นสิทธิ์ใหม่เช่นเดียวกับการใช้กล้องหรือการเข้าถึงตำแหน่งของคุณ


1
สิ่งนี้ใช้ VPN / proxy เหมือนแอพที่คล้ายกันหรือไม่ มันบล็อกการเข้าถึงจากไลบรารีดั้งเดิมหรือไม่
แฮ็

1
@hackel ฉันติดตั้งแล้ว (ต้องไซด์โหลดเนื่องจากมันบอกว่าไม่สามารถใช้งานได้ในประเทศของฉัน) มันขอให้ฉันเปิดใช้งาน VPN ยังไม่ดูเหมือนจะบล็อกอินเตอร์เน็ตไร้สาย
Bort

3

คำนำ

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

ได้รับการทดสอบและยืนยันว่าใช้งานได้กับ Android 7.1.2


หลักการและเหตุผล

เป็นที่กล่าวถึงโดย answerers อื่น ๆ แอปใด ๆ ที่มีความประสงค์ในการเข้าถึงอินเทอร์เน็ตที่จะต้องประกาศรับอนุญาตปฏิเสธไม่ได้ภายในของมันandroid.permission.INTERNET AndroidManifest.xmlAndroid จำได้อย่างไรว่าสิทธิ์ใดที่แอพร้องขอ โดยการบันทึกในพวกเขาpackages.xml, /data/systemไฟล์ที่มีการป้องกันที่ตั้งอยู่ที่

มันไปโดยไม่บอกว่าคนอย่างเราอาจสนใจแก้ไขไฟล์ดังกล่าวเพื่อวัตถุประสงค์ในการเพิ่มหรือลบสิทธิ์หากพวกเขามีสิทธิ์ใช้งานรูท นี่เป็นวิธีของเราในการปฏิเสธการเข้าถึงอินเทอร์เน็ตโดยไม่ต้องใช้ VPN หรือซอฟต์แวร์ไฟร์วอลล์


packages.xmlไฟล์

packages.xmlรายชื่อไฟล์ทั้งหมดของปพลิเคชันที่ติดตั้งร่วมกับเส้นทางและสิทธิ์ของพวกเขา แต่ละแอปจะอยู่ระหว่าง<package></package>แท็ก เพื่อคำตอบของฉันฉันจะกำหนดเป้าหมาย Nova Launcher โดย TeslaCoil stanza ของแอปในไฟล์มีดังนี้:

    <package name="com.teslacoilsw.launcher" codePath="/data/app/com.teslacoilsw.launcher-1" nativeLibraryPath="/data/app/com.teslacoilsw.launcher-1/lib" publicFlags="944258628" privateFlags="0" ft="16075caace8" it="16075cac965" ut="16075cac965" version="53000" userId="10083" installer="com.android.packageinstaller">
        <sigs count="1">
            <cert index="7" key="3082034d30820235a0030201020204638fbad3300d06092a864886f70d01010b05003057315530530603550403134c726f636b7a35353535204f553d44726f69642046726565646f6d20556e6974204f3d44726f69642046726565646f6d20496e63204c3d556e6b6e6f776e20533d556e6b6e6f776e20433d4c4b301e170d3134313230353030343535375a170d3434313132373030343535375a3057315530530603550403134c726f636b7a35353535204f553d44726f69642046726565646f6d20556e6974204f3d44726f69642046726565646f6d20496e63204c3d556e6b6e6f776e20533d556e6b6e6f776e20433d4c4b30820122300d06092a864886f70d01010105000382010f003082010a0282010100818b312365be3e55f48989d43468880067464eca65aa3ba73305178311fc2a053c143182f6d2ea635b57dc327adf8a5a9b763c03f0a48c38530114e6979358d6bfca37d161ca6fe8bb0d80f061d7b67bc1456cdfc38e0cda2ebd05c48113f701140950f0fe4315de6b95c7504129abb2c1a61f1e4f1229fb83f474dbcd7dc957b84a1b8a2aa0157b223609d77980a3f579c93fbb24a6f9fbb5a8e207cccdf1add616c95c732d5c114c0168fdbd9c00ddf211c2b8886b9498a34f389025802e334f404b7e4eb75f6308f086e5bdac64db10053c7ff8d21a350b941d5394ffbe2bd037139134eb065c2317625e65d3f628aecf7965a0d70b02e68aa8371efd1fe50203010001a321301f301d0603551d0e04160414a4e66b693ecdf3241883e3eed668354e1531ba11300d06092a864886f70d01010b050003820101003992f3f461a290db767911a4a519f035fe0c34e597e2fba2e31371e260bd2fc8f9a93c35e6f06553d02588d2f8453ee784d2ba09a696e66304e3e01f7c6bdf5b2747fc73f79d00379cc94eefa542c8eb308318364df2fa1a9c6a7ef0669d08f7b1f8635d0d4331e2817d5aeb0854760116c29801cf915ef67d5c0e04861cad4fa7b96fe8f9a0baf0cda649cd35a7122142ba38b2d16d9d319a8604a41fe0025d89be87f84ce8fc080ab54c76a96f3d9b70b1a5f5e18e48768e3684bca8a950665e16a6d50cf0045949baebca876d55eeba52ea421f33009872d9d654f8f8caa1bb465d754694d4bf6cb92f3299fbec3781849b37e6ba23ffe3d6c20ecb9bc65d" />
        </sigs>
        <perms>
            <item name="com.android.launcher3.permission.READ_SETTINGS" granted="true" flags="0" />
            <item name="com.google.android.c2dm.permission.RECEIVE" granted="true" flags="0" />
            <item name="com.teslacoilsw.launcher.permission.C2D_MESSAGE" granted="true" flags="0" />
            <item name="android.permission.EXPAND_STATUS_BAR" granted="true" flags="0" />
            <item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />
            <item name="android.permission.INTERNET" granted="true" flags="0" />
            <item name="android.permission.ACCESS_NETWORK_STATE" granted="true" flags="0" />
            <item name="android.permission.SET_WALLPAPER" granted="true" flags="0" />
            <item name="android.permission.SET_WALLPAPER_HINTS" granted="true" flags="0" />
            <item name="android.permission.VIBRATE" granted="true" flags="0" />
            <item name="android.permission.ACCESS_WIFI_STATE" granted="true" flags="0" />
            <item name="android.permission.WAKE_LOCK" granted="true" flags="0" />
        </perms>
        <proper-signing-keyset identifier="10" />
    </package>

การเยื้องมีการรายงานคำต่อคำจากไฟล์


ขั้นตอน

ด้วยความรู้ด้านบนตอนนี้เราสามารถตรวจสอบการอนุญาตของ Nova Launcher ได้<perms></perms>แล้ว เร็ว ๆ นี้เราจะพบสิ่งเดียวที่เราต้องแก้ไข:

            <item name="android.permission.INTERNET" granted="true" flags="0" />

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


ข้อเสีย

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

นอกจากนี้ตามที่ Firelord ระบุไว้การอัปเดตแอปจะทำให้การเปลี่ยนแปลงกลับเป็นโมฆะอย่างมีประสิทธิภาพความพยายามของเราและต้องได้รับอนุญาตให้ลบอีกครั้ง


การแก้ไขขั้นตอนนี้

ในการย้อนกลับสิ่งที่เราทำด้านบนสิ่งที่จำเป็นคือการเพิ่มสิทธิ์ที่เราลบกลับไปไว้ในกลุ่มอื่น ๆ และเพื่อรีบูตอุปกรณ์


คำปฏิเสธ

ฉันไม่มีส่วนเกี่ยวข้องกับ Nova Launcher หรือนักพัฒนา

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