規制当局は、ユーザーがプライバシー契約ダイアログボックスの [同意する] ボタンをクリックする前に、アプリが関連する機密 API を呼び出せないことを要求しています。この規制要件に対応するため、mPaaS Android 10.1.32.17 以降のバージョンと 10.1.60.5 以降のバージョンのベースラインがサポートされています。実際の状況に合わせてプロジェクトを変更するには、このトピックを参照してください。
プロシージャ
[BaseActivity] は埋め込みデータを収集するため、プライバシーポリシーに同意する前にアプリがプライベートデータを収集することになるため、プライバシーダイアログボックスをポップアップするアクティビティは、mPaaS の [BaseActivity] を継承できません。
プライバシー権限ダイアログボックスの新しいコールバッククラスを作成します。新しいクラスを作成し、
PrivacyListenerAPI 操作を実装します。クラスの実装については、次のコードを参照してください。public class MyPrivacyListener implements PrivacyListener { // このメソッドでプライバシー権限ダイアログ ボックスを作成します @Override public void showPrivacy(final Activity activity, final PrivacyResultCallback privacyResultCallback) { if(null==privacyResultCallback){ return; } if(null!=activity){ new AlertDialog.Builder(activity) .setTitle("プライバシー権限ダイアログボックス") .setMessage("メインコンテンツ") .setPositiveButton("同意して使い続ける", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { // [OK] をクリックした後、ダイアログボックスをキャンセルします dialogInterface.cancel(); // ダイアログボックスの結果を true に設定します privacyResultCallback.onResult(true); } }) .setNegativeButton("同意しない", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { // [同意しない] をクリックした後、ダイアログボックスをキャンセルします dialogInterface.cancel(); // ダイアログボックスの結果を false に設定します privacyResultCallback.onResult(false); // 現在の activity を終了します。フレームワークはプロセスを強制終了します if(null!=activity){ activity.finish(); } } }) .setCancelable(false) .create() .show(); }else{ // activity が空の場合、コールバック結果は false に設定されます privacyResultCallback.onResult(false); } } }10.1.68.42 以降のベースラインを使用していて、プライバシー状態をクリアする必要がある場合は、
PrivacyListener2インターフェースを実装し、shouldClear関数を実装してください。次のコードは、
shouldClear関数の説明です。@Override public boolean shouldClear(Context context) { //ユーザーがプライバシー契約に同意しない場合、デフォルトでは SharedPreferences を使用して false を格納し、false を返すように設定します。ウィンドウを再度ポップアップする必要がある場合は、SP に格納されている true を true を返すように設定する必要があります。 return false;//戻り値は SP に格納されているブール値です。 }コールバック中に、
windowFocusChangeをトリガーするためにダイアログボックスを使用する必要があります。フレームワークは、トリガー後に後続の操作を実行します。コールバッククラスはシステムフレームワークによって反射的に初期化され、非常に早くスケジュールされるため、メソッド名を持つコンストラクタを追加しないでください。また、コンストラクタに特定のロジックを追加しないでください。ダイアログボックスでリソースを使用する必要がある場合は、ベースラインごとに異なるメソッドを使用する必要があります。32 ベースラインでは、次のメソッドを使用する必要があります。
Resources resource = QuinoxAgent.getInstance().getResourcesByBundle("リソースが配置されているバンドルのバンドル名");説明バンドル名は、バンドルプロジェクトのメインモジュールの
/build/intermediates/bundle/META-INF/BUNDLE.MFで確認できます。
60 ベースラインでは、Portal プロジェクトのメインモジュールの下に
res_slinksファイルを作成し、リソースが配置されているバンドルのgroupとartifactをルールに従ってres_slinksファイルに書き込む必要があります。ルールはgroup-artifact.split("-")[0]です。コンテンツが長すぎる場合は、新しい行を追加する場合にコンテンツが正しいかどうかを確認する必要があります。例:group = com.mpaas.demo.materialdesign` `artifact = materialdesign-build`res_slinks ファイルに書き込まれる最終的な構成は
com.mpaas.demo.materialdesign-materialdesignです。
上記のコンテンツを完了すると、
LayoutInflator.inflate(R.layout.xxx)を使用してリソースを直接呼び出すことができます。
AndroidManifestにコールバッククラスを登録します。プライバシー権限ダイアログボックスのコールバッククラスをportalのAndroidManifestに登録します。valueは、先ほど実装したコールバッククラスの完全なパスです。コードは次のように表示されます。完全なパスとクラス名は、独自のコールバッククラスに置き換える必要があることに注意してください。<!--プライバシー権限ダイアログボックスのコールバック--> <meta-data android:name="privacy.listener" android:value="com.mpaas.demo.launcher.MyPrivacyListener" />ポップアップボックスのインターセプトを開始します。
MockLauncherApplicationAgentのpreInitで、ダイアログボックスのインターセプトを追加します。コードは次のとおりです。//ユーザーにプライバシー権限ダイアログボックスを表示するかどうかを確認します if(! PrivacyUtil.isUserAgreed(getApplicationContext())){ PermissionGate.getInstance().waitForUserConform(mContext, getMicroApplicationContext()); }最初のアクティビティを開始します。
MockLauncherActivityAgentのpostInitで、最初のActivityジャンプを実行します。コードは次のとおりです。// ユーザーのプライバシー権限が取得されているかどうかを判断します 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); }