Otoritas pengaturan mengharuskan aplikasi untuk tidak memanggil API sensitif sebelum pengguna menyetujui kebijakan privasi dengan mengklik tombol Agree di kotak dialog perjanjian privasi. Untuk memenuhi persyaratan ini, baseline mPaaS Android versi 10.1.32.17 atau lebih baru dan versi 10.1.60.5 atau lebih baru didukung. Lihat topik ini untuk menyesuaikan proyek sesuai kebutuhan Anda.
Prosedur
Activity yang menampilkan kotak dialog privasi tidak boleh mewarisi BaseActivity dari mPaaS, karena BaseActivity akan mengumpulkan data tertanam, yang dapat menyebabkan aplikasi mengumpulkan data pribadi sebelum pengguna menyetujui kebijakan privasi.
Buat kelas callback baru untuk dialog izin privasi. Implementasikan operasi API
PrivacyListener. Berikut adalah contoh implementasi:public class MyPrivacyListener implements PrivacyListener { // Buat kotak dialog izin privasi dalam metode ini @Override public void showPrivacy(final Activity activity, final PrivacyResultCallback privacyResultCallback) { if(null==privacyResultCallback){ return; } if(null!=activity){ new AlertDialog.Builder(activity) .setTitle("Kotak dialog izin privasi") .setMessage("Isi utama") .setPositiveButton("Setuju untuk melanjutkan penggunaan", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { // Setelah Anda mengklik OK, tutup kotak dialog dialogInterface.cancel(); // Tetapkan hasil kotak dialog menjadi true privacyResultCallback.onResult(true); } }) .setNegativeButton("Tidak setuju dan keluar", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { // Setelah Anda mengklik Tidak Setuju, tutup kotak dialog dialogInterface.cancel(); // Tetapkan hasil kotak dialog menjadi false privacyResultCallback.onResult(false); // Akhiri aktivitas saat ini, kerangka kerja akan membunuh proses if(null!=activity){ activity.finish(); } } }) .setCancelable(false) .create() .show(); }else{ // Jika aktivitas kosong, hasil callback ditetapkan menjadi false privacyResultCallback.onResult(false); } } }Jika menggunakan baseline 10.1.68.42 atau lebih baru dan perlu menghapus status privasi, implementasikan antarmuka
PrivacyListener2dan fungsishouldClear.Berikut adalah deskripsi fungsi
shouldClear:@Override public boolean shouldClear(Context context) { //Ketika pengguna tidak menyetujui perjanjian privasi, secara default SharedPreferences digunakan untuk menyimpan false dan disetel untuk mengembalikan false. Jika Anda perlu menampilkan jendela lagi, Anda perlu mengatur nilai true yang tersimpan di SP untuk mengembalikan true; return false;//Nilai pengembalian adalah nilai boolean yang tersimpan di SP. }Selama callback, kotak dialog harus memicu
windowFocusChange. Kerangka kerja akan menjalankan operasi selanjutnya setelah pemantik dipicu. Karena kelas callback diinisialisasi secara reflektif oleh sistem dan dijadwalkan sangat awal, jangan tambahkan konstruktor dengan nama metode. Selain itu, hindari menambahkan logika spesifik ke konstruktor. Jika perlu menggunakan sumber daya di kotak dialog, gunakan metode berbeda berdasarkan baseline yang digunakan.Untuk baseline di bawah 32, gunakan metode berikut:
Resources resource = QuinoxAgent.getInstance().getResourcesByBundle("bundlename dari Bundle tempat sumber daya berada");nullNama bundlename dapat diperiksa di
/build/intermediates/bundle/META-INF/BUNDLE.MFdi modul utama proyek Bundle.
Untuk baseline di bawah 60, buat file
res_slinksdi modul utama proyek Portal, dan tulisgroupdanartifactdari Bundle tempat sumber daya berada di fileres_slinkssesuai aturan. Aturannya adalahgroup-artifact.split("-")[0]. Pastikan konten benar jika menambahkan baris baru. Contohnya:group = com.mpaas.demo.materialdesign` `artifact = materialdesign-build`Konfigurasi akhir yang ditulis ke dalam file res_slinks adalah
com.mpaas.demo.materialdesign-materialdesign.
Setelah menyelesaikan langkah-langkah di atas, Anda dapat langsung menggunakan
LayoutInflator.inflate(R.layout.xxx)untuk memanggil sumber daya.
Daftarkan kelas callback di
AndroidManifest. Daftarkan kelas callback kotak dialog izin privasi diAndroidManifestdariportal, denganvaluesebagai jalur lengkap kelas callback yang telah diimplementasikan. Contoh kode:<!--callback kotak dialog izin privasi--> <meta-data android:name="privacy.listener" android:value="com.mpaas.demo.launcher.MyPrivacyListener" />Mulai intersepsi kotak dialog pop-up. Di
preInitdariMockLauncherApplicationAgent, tambahkan intersepsi kotak dialog. Contoh kode://Periksa apakah Anda ingin menampilkan kotak dialog izin privasi kepada pengguna if(! PrivacyUtil.isUserAgreed(getApplicationContext())){ PermissionGate.getInstance().waitForUserConform(mContext, getMicroApplicationContext()); }Mulai Aktivitas pertama. Di
postInitdariMockLauncherActivityAgent, lakukan lompatan keActivitypertama. Contoh kode:// Tentukan apakah izin privasi pengguna telah diperoleh if(PrivacyUtil.isUserAgreed(activity)){ new Handler().postDelayed(new Runnable() { public void run() { Intent intent = new Intent(activity, MainActivity.class); activity.startActivity(intent); activity.finish(); } }, 200); }