คำถามติดแท็ก android-6.0-marshmallow

Android Marshmallow เดิมเรียกว่า "Android M" เป็นเวอร์ชัน 6.0 ของ Android รองรับ API ระดับ 23 และเริ่มจัดส่งในเดือนตุลาคม 2015


11
วิธีการเปิดหน้าจอการอนุญาตโดยทางโปรแกรมสำหรับแอปเฉพาะบน Android Marshmallow
ฉันมีคำถามเกี่ยวกับ Android Marshmallow ใหม่: เป็นไปได้ไหมที่จะแสดงหน้าจอการอนุญาตสำหรับแอพที่ต้องการผ่านทาง Intent หรือสิ่งที่คล้ายกัน เป็นไปได้หรือไม่ที่จะแสดงการตั้งค่าแอพด้วยรหัสต่อไปนี้ - มีระบบอะนาล็อกสำหรับเปิดหน้าจอการอนุญาตโดยตรงหรือไม่? startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", getPackageName(), null))); ฉันได้ทำการวิจัยเกี่ยวกับเรื่องนี้แล้ว แต่ฉันไม่สามารถหาวิธีแก้ปัญหาที่เหมาะสมได้ - ฉันขอขอบคุณทุกความช่วยเหลือ!

24
Android M - ตรวจสอบการอนุญาตรันไทม์ - วิธีการตรวจสอบว่าผู้ใช้เลือก“ ไม่ต้องถามอีก”
ตามนี้: http://developer.android.com/preview/features/runtime-permissions.html#codingแอปสามารถตรวจสอบสิทธิ์การใช้งานจริงและการขออนุญาตหากยังไม่ได้รับอนุญาต กล่องโต้ตอบต่อไปนี้จะปรากฏขึ้นจากนั้น: ในกรณีที่ผู้ใช้ปฏิเสธการอนุญาตที่สำคัญ imo แอปควรแสดงคำอธิบายว่าทำไมต้องมีการอนุญาตและสิ่งที่มีผลกระทบต่อการลดลง กล่องโต้ตอบนั้นมีสองตัวเลือก: ลองอีกครั้งอีกครั้ง (ขอสิทธิ์อีกครั้ง) ปฏิเสธ (แอปจะทำงานโดยไม่ได้รับอนุญาต) อย่างไรก็ตามหากผู้ใช้ตรวจสอบNever ask againไม่ควรแสดงกล่องโต้ตอบที่สองพร้อมคำอธิบายโดยเฉพาะอย่างยิ่งหากผู้ใช้เคยปฏิเสธมาก่อน ตอนนี้คำถามคือ: แอพของฉันรู้ได้อย่างไรว่าผู้ใช้ได้ตรวจสอบแล้วNever ask again? IMO onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)ไม่ให้ข้อมูลนั้นแก่ฉัน คำถามที่สองก็คือ: Google มีแผนที่จะรวมข้อความที่กำหนดเองในช่องโต้ตอบการอนุญาตที่จะอธิบายว่าทำไมแอปจำเป็นต้องได้รับอนุญาตหรือไม่ ด้วยวิธีนี้จะไม่มีการสนทนาครั้งที่สองซึ่งแน่นอนว่าจะทำให้ดีขึ้น ux

8
แอพ Android จะจดจำข้อมูลหลังจากถอนการติดตั้งและติดตั้งใหม่
ในขณะที่การพัฒนาแอพ Android ที่กำหนดเป้าหมายทุกเวอร์ชั่นด้านบน 4.1 ฉันสังเกตว่าการถอนการติดตั้งแอพของฉันและการติดตั้งอีกครั้งนั้นไม่ได้ล้างข้อมูล แอพได้รับการออกแบบมาเพื่อเก็บรายละเอียดที่ถามในหน้าจอแรก หลังจากถอนการติดตั้งและติดตั้งอีกครั้งใน OS เวอร์ชัน 4.4.4 แอปจะแจ้งให้ผู้ใช้กรอกข้อมูลซึ่งเป็นเรื่องปกติ อย่างไรก็ตามในเวอร์ชัน 6.0 ลำดับการติดตั้ง / ถอนการติดตั้งเดียวกันจะนำข้อมูลที่ป้อนกลับมา ฉันพยายามตรวจสอบให้แน่ใจโดยไปที่/data/data/my package folderเพื่อดูฐานข้อมูลหายไปหลังจากถอนการติดตั้งและแน่นอนว่าโฟลเดอร์จะถูกลบระหว่างการถอนการติดตั้ง ฉันพยายามลบแอพโดยไปที่หน้าการตั้งค่าผ่าน Titanium Backup และผลลัพธ์เหมือนกัน อุปกรณ์ดังกล่าวรูท Nexus 5 ที่รัน v6.0 อะไรคือสาเหตุของพฤติกรรมแปลก ๆ นี้?

14
onRequestPermissionsResult ไม่ถูกเรียกใช้ในส่วนถ้ากำหนดไว้ในส่วนและกิจกรรม
ฉันมีแฟรกเมนต์ที่ฉันมี recyclerview และตั้งค่าข้อมูลใน recyclerview นี้โดยใช้อะแดปเตอร์ recyclerview ตอนนี้ฉันมีปุ่มในรายการของอะแดปเตอร์คลิกที่ฉันต้องตรวจสอบสิทธิ์ READ_EXTERNAL_STORAG ​​E ใน Android สำหรับรูปแบบการอนุญาตใหม่ใน Android ฉันได้สร้างฟังก์ชั่นใหม่ในส่วนของอะแดปเตอร์นี้เพื่อตรวจสอบว่าได้รับอนุญาตหรือไม่และขออนุญาตหากยังไม่ได้รับอนุญาต ฉันได้ผ่าน MyFragment.this เป็นพารามิเตอร์ในอะแดปเตอร์และเรียกวิธีการส่วนของการคลิกปุ่มในอะแดปเตอร์ ฉันได้ใช้รหัสด้านล่างเพื่อโทรไปขอการอนุญาตเป็นส่วน ๆ if(ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, ConstantVariables.READ_EXTERNAL_STORAGE); } ฉันได้ลบล้างonRequestPermissionsResultวิธีการในส่วนโดยใช้รหัสด้านล่าง: @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case ConstantVariables.READ_EXTERNAL_STORAGE: // If request is cancelled, the result …

24
Android ขออนุญาต Marshmallow?
ฉันกำลังทำงานกับแอปพลิเคชันที่ต้องได้รับการอนุญาต "อันตราย" หลายอย่าง ดังนั้นฉันจึงลองเพิ่ม "ขออนุญาต" ตามต้องการใน Android Marshmallow (ระดับ API 23) แต่ไม่สามารถหาวิธีทำได้ ฉันจะขออนุญาตใช้รูปแบบการอนุญาตใหม่ในแอพของฉันได้อย่างไร

22
สิทธิ์ Android หลายสิทธิ์
ฉันรู้ว่า Android 6.0 มีสิทธิ์ใหม่และฉันรู้ว่าฉันสามารถโทรหาพวกเขาด้วยสิ่งนี้ if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, PERMISSION_WRITE_STORAGE); } วันนี้ฉันเห็นแอป Google ที่ต้องการการอนุญาต 3 รายการ: รายชื่อติดต่อ sms และกล้อง มันกำลังสร้างหน้า 1-3 และเรียกพวกมันทั้งหมดเข้าด้วยกันในเวลาเดียวกันเพื่อเปิดใช้งาน ใครสามารถบอกฉันได้ว่าฉันสามารถโทร 4 สิทธิ์เพื่อเปิดใช้งานในเวลาเดียวกันเช่น SMS, กล้อง, รายชื่อและที่เก็บข้อมูล? ตัวอย่าง (ลืมชื่อแอพ google :() แอพนี้ต้องการ SMS รายชื่อติดต่อและกล้อง แอพถามฉัน (และทำหน้าไดอะล็อก 1-3) เปิดใช้งาน SMS เปิดใช้งานผู้ติดต่อแล้วกล้อง ดังนั้นแอป Google …

12
ข้อผิดพลาดในการอนุญาตให้ใช้พื้นที่เก็บข้อมูลใน Marshmallow
Наэтотвопросестьответына กองมากเกินнарусском : Какполучитьсписокфайловвдиректории? (Android API ระดับ 26) ใน Lollipop ฟังก์ชันการดาวน์โหลดใช้งานได้ดีในแอพของฉัน แต่เมื่อฉันอัปเกรดเป็น Marshmallow แอปของฉันจะขัดข้องและให้ข้อผิดพลาดนี้เมื่อฉันพยายามดาวน์โหลดจากอินเทอร์เน็ตไปยังการ์ด SD: Neither user nor current process has android.permission.WRITE_EXTERNAL_STORAGE มันบ่นเกี่ยวกับรหัสบรรทัดนี้: DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); manager.enqueue(request); ฉันมีสิทธิ์ใช้งานในแอปพลิเคชันภายนอก: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> ฉันทำความสะอาดและสร้างโครงการใหม่ แต่ก็ยังขัดข้อง

11
สิทธิ์ Android M: สร้างความสับสนในการใช้ฟังก์ชัน shouldShowRequestPermissionRationale ()
ฉันกำลังอ่านเอกสารอย่างเป็นทางการเกี่ยวกับรูปแบบการอนุญาตใหม่ใน Android M. มันพูดถึงshouldShowRequestPermissionRationale()ฟังก์ชั่นที่จะส่งคืนtrueหากแอพขอสิทธิ์นี้ก่อนหน้านี้และผู้ใช้ปฏิเสธคำขอ falseหากผู้ใช้หันไปขออนุญาตในอดีตและเลือกไม่ต้องถามอีกตัวเลือกวิธีนี้ผลตอบแทน แต่เราจะแยกความแตกต่างระหว่างสองกรณีต่อไปนี้ได้อย่างไร กรณีที่ 1 : แอพไม่ได้รับอนุญาตและผู้ใช้ไม่ได้รับอนุญาตก่อน ในกรณีนี้ควร ShowShowRequestPermissionRationale () จะกลับเท็จเพราะนี่เป็นครั้งแรกที่เราถามผู้ใช้ กรณีที่ 2 : ผู้ใช้ปฏิเสธการอนุญาตและเลือก "ไม่ต้องถามอีก" ในกรณีนี้ก็ควร ShowRequestPermissionRationale () จะกลับมาเป็นเท็จ ฉันต้องการส่งผู้ใช้ไปยังหน้าการตั้งค่าของแอพในกรณีที่ 2 ฉันจะแยกความแตกต่างระหว่างสองกรณีนี้ได้อย่างไร

24
ConnectivityManager getNetworkInfo (int) เลิกใช้แล้ว
การใช้compileSdkVersion 23แต่พยายามสนับสนุนไกลถึง 9 getNetworkInfo(int)เลิกใช้แล้วใน 23 ข้อเสนอแนะคือการใช้getAllNetworks()และgetNetworkInfo(Network)แทน อย่างไรก็ตามทั้งสองอย่างนี้ต้องการ API ขั้นต่ำ 21 มีคลาสที่เราสามารถใช้ในแพ็คเกจการสนับสนุนที่สามารถช่วยเหลือสิ่งนี้ได้หรือไม่? ฉันรู้ว่ามีการเสนอวิธีแก้ไขปัญหามาก่อนอย่างไรก็ตามความท้าทายของข้อกำหนดขั้นต่ำ API ของฉันที่ 9 ก่อให้เกิดปัญหา

8
ต้องเปิดใช้งานตำแหน่งสำหรับการสแกนด้วยบลูทู ธ พลังงานต่ำบน Android 6.0
หลังจากอัปเกรดเป็น Android เวอร์ชัน 6.0 การสแกน Bluetooth Low Energy (BLE) จะใช้ได้เฉพาะเมื่อเปิดใช้งานบริการตำแหน่งบนอุปกรณ์เท่านั้น ดูที่นี่สำหรับการอ้างอิง: Bluetooth Low Energy startScan บน Android 6.0 ไม่พบอุปกรณ์ โดยทั่วไปคุณจะต้องเปิดใช้งานการอนุญาตสำหรับแอปและเปิดใช้งานสำหรับโทรศัพท์ นี่คือบั๊กหรือไม่? เป็นไปได้ไหมที่จะสแกนโดยไม่เปิดใช้บริการระบุตำแหน่ง ฉันไม่ต้องการมีตำแหน่งสำหรับแอปทั้งหมดของฉัน แก้ไข ฉันไม่ได้พูดถึงว่าฉันกำลังใช้startScan()วิธีการที่BluetoothLeScannerให้ไว้ใน API 21 ฉันโอเคกับหลักสูตรและการอนุญาตตำแหน่งที่ดีในรายการที่วิธีนี้ต้องการ ฉันไม่ต้องการให้ผู้ใช้แอปของฉันต้องเปิดใช้บริการระบุตำแหน่งบนอุปกรณ์ (GPS ฯลฯ ) เพื่อใช้แอปของฉัน ก่อนหน้านี้startScan()วิธีนี้จะเรียกใช้และส่งคืนผลลัพธ์โดยปิดใช้บริการตำแหน่งบนโทรศัพท์ อย่างไรก็ตามใน Marshmallow แอปพลิเคชันเดียวกันจะ "สแกน" แต่ล้มเหลวโดยไม่โต้ตอบและไม่แสดงผลลัพธ์เมื่อไม่ได้เปิดใช้งานบริการระบุตำแหน่งบนโทรศัพท์และการอนุญาตแน่นอน / ตำแหน่งที่ดียังคงอยู่ในไฟล์ Manifest

5
วิธีขอสิทธิ์จากบริการใน Android Marshmallow
ใน Android Marshmallow ควรขอสิทธิ์ในรันไทม์เมื่อจำเป็นแทนที่จะต้องใช้ทั้งหมดพร้อมกันเมื่อติดตั้งแอป อย่างไรก็ตามดูเหมือนว่าฉันสามารถขอสิทธิ์จากกิจกรรมได้เท่านั้นซึ่งเป็นปัญหาเนื่องจากแอปของฉันมีเพียงบริการเท่านั้น (ทำไมถึงถามอย่างนั้นแอปนี้มีหน้าปัดนาฬิกา Android Wear ที่รวมอยู่ภายในและโทรศัพท์ทั้งหมดจะค้นหารูปภาพในบริเวณใกล้เคียงเพื่อส่งไปยังนาฬิกาโดยไม่จำเป็นต้องทำกิจกรรมใด ๆ แต่ต้องมีการอนุญาตตำแหน่ง) มีวิธีใดบ้างในการขอสิทธิ์จากบริการ? หรือบังคับให้อนุญาตในเวลาติดตั้งเหมือนในอดีตหรือไม่

7
Android 5.1.1 ขึ้นไป - getRunningAppProcesses () ส่งคืนแพ็คเกจแอปพลิเคชันของฉันเท่านั้น
ดูเหมือนว่าในที่สุด Google จะปิดประตูทั้งหมดเพื่อรับแพ็คเกจแอปพลิเคชันเบื้องหน้าปัจจุบัน หลังจากการอัปเดต Lollipop ซึ่งฆ่าgetRunningTasks(int maxNum)และด้วยคำตอบนี้ฉันใช้รหัสนี้เพื่อรับแพ็คเกจแอปพลิเคชันเบื้องหน้าตั้งแต่ Lollipop: final int PROCESS_STATE_TOP = 2; RunningAppProcessInfo currentInfo = null; Field field = null; try { field = RunningAppProcessInfo.class.getDeclaredField("processState"); } catch (Exception ignored) { } ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> appList = am.getRunningAppProcesses(); for (RunningAppProcessInfo app : appList) { if (app.importance == …

27
แถบสถานะจะเปลี่ยนเป็นสีขาวและไม่แสดงเนื้อหาด้านหลัง
ฉันกำลังทดลองใช้ AppCompat บน Marshmallow และฉันต้องการให้แถบสถานะโปร่งใส แต่มันจะเปลี่ยนเป็นสีขาว ฉันได้ลองใช้วิธีแก้ปัญหาสองสามวิธี แต่ไม่ได้ผลสำหรับฉัน ( แถบสถานะโปร่งใสไม่ทำงานกับ windowTranslucentNavigation = "false" , Lollipop: วาดด้านหลัง statusBar โดยกำหนดสีเป็นโปร่งใส ) นี่คือรหัสที่เกี่ยวข้อง styles.xml ของฉัน <style name="Bacon" parent="Theme.Bacon"/> <style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/theme_primary</item> <item name="colorPrimaryDark">@color/theme_primary_dark</item> <item name="colorAccent">@color/theme_accent</item> <item name="windowActionBar">false</item> <item name="windowActionBarOverlay">true</item> <item name="windowNoTitle">true</item> <item name="android:windowBackground">@color/background_material_light</item> </style> <style name="Theme.Bacon.Detail" parent="Bacon"/> v21 <style name="Bacon" parent="Theme.Bacon"> …

10
วิธีเพิ่ม Apache HTTP API (เดิม) เป็น compile-time dependency เพื่อ build.grade สำหรับ Android M
ดังที่ได้กล่าวไว้ที่นี่ Android M จะไม่รองรับ Apache HTTP API สถานะเอกสารเป็น: ใช้คลาส HttpURLConnection แทน หรือ ในการใช้ Apache HTTP API ต่อไปคุณต้องประกาศการพึ่งพาเวลาคอมไพล์ต่อไปนี้ในไฟล์ build.gradle ของคุณก่อน: แอนดรอยด์ {useLibrary 'org.apache.http.legacy'} ฉันได้แปลงการใช้งาน HttpClient ของโครงการเป็น HttpURLConnection แล้วอย่างไรก็ตามฉันยังต้องใช้ HttpClient ในบางพื้นที่ ดังนั้นฉันพยายามประกาศ 'org.apache.http.legacy' เป็นการพึ่งพาเวลาคอมไพล์ แต่ได้รับข้อผิดพลาดใน build.gradle: ไม่พบวิธี Gradle DSL: 'useLibrary ()' คำถามของฉันคือ: ฉันจะประกาศ 'org.apache.http.legacy' เป็นการอ้างอิงเวลาคอมไพล์ในโครงการของฉันได้อย่างไร ความช่วยเหลือใด ๆ ที่ชื่นชมมาก ขอบคุณ

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