Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

จะทราบได้อย่างไรว่าทำงานบนอุปกรณ์ที่รูทหรือไม่อยู่ใน Android?


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

ขั้นตอนที่ 1 − สร้างโครงการใหม่ใน Android Studio ไปที่ไฟล์ ⇒ โครงการใหม่และกรอกรายละเอียดที่จำเป็นทั้งหมดเพื่อสร้างโครงการใหม่

ขั้นตอนที่ 2 − เพิ่มรหัสต่อไปนี้ใน res/layout/activity_main.xml

  

ในโค้ดด้านบน เราได้นำมุมมองข้อความ มันมีข้อมูลเกี่ยวกับรูท

ขั้นตอนที่ 3 − เพิ่มรหัสต่อไปนี้ใน src/MainActivity.java

แพ็คเกจ com.example.andy.myapplication;นำเข้า android.os.Build;นำเข้า android.os.Bundle;นำเข้า android.support.annotation.RequiresApi;นำเข้า android.support.v7.app.AppCompatActivity;นำเข้า android.widget .TextView;นำเข้า android.widget.Toast; MainActivity คลาสสาธารณะขยาย AppCompatActivity { มุมมอง int =R.layout.activity_main; TextView rootFinder; @RequiresApi (api =Build.VERSION_CODES.JELLY_BEAN) @Override ป้องกัน void onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); setContentView(ดู); rootFinder =findViewById (R.id.rootFinder); executeShellCommand("su"); } โมฆะส่วนตัว executeShellCommand(String su) { Process process =null; ลอง { กระบวนการ =Runtime.getRuntime().exec(su); rootFinder.setText("เป็นอุปกรณ์ที่รูทแล้ว"); Toast.makeText(MainActivity.this, "เป็นอุปกรณ์ที่รูทแล้ว", Toast.LENGTH_LONG).show(); } catch (ข้อยกเว้น e) { rootFinder.setText ("ไม่ใช่อุปกรณ์ที่รูท"); } ในที่สุด { if (process ! =null) { ลอง { process.destroy(); } catch (ข้อยกเว้น e) { } } } }}

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

executeShellCommand("su");........................................ ................................................................. โมฆะส่วนตัว executeShellCommand (String su) { กระบวนการประมวลผล =null; ลอง { กระบวนการ =Runtime.getRuntime().exec(su); rootFinder.setText("เป็นอุปกรณ์ที่รูทแล้ว"); Toast.makeText(MainActivity.this, "เป็นอุปกรณ์ที่รูทแล้ว", Toast.LENGTH_LONG).show(); } catch (ข้อยกเว้น e) { rootFinder.setText ("ไม่ใช่อุปกรณ์ที่รูท"); } ในที่สุด { if (process ! =null) { ลอง { process.destroy(); } catch (ข้อยกเว้น e) { } } }}

มาลองเรียกใช้แอปพลิเคชันของคุณกัน ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์แล้วคลิกไอคอน Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก แล้วตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ -

จะทราบได้อย่างไรว่าทำงานบนอุปกรณ์ที่รูทหรือไม่อยู่ใน Android?

จากผลลัพธ์ด้านบนที่แสดง แสดงว่าอุปกรณ์ยังไม่ได้รับการรูท