すべてのプロダクト
Search
ドキュメントセンター

Mobile Platform as a Service:プライバシー権限ポップアップの使用 (Portal&Bundle)

最終更新日:Jan 17, 2025

規制当局は、ユーザーがプライバシー契約ダイアログボックスの [同意する] ボタンをクリックする前に、アプリが関連する機密 API を呼び出せないことを要求しています。この規制要件に対応するため、mPaaS Android 10.1.32.17 以降のバージョンと 10.1.60.5 以降のバージョンのベースラインがサポートされています。実際の状況に合わせてプロジェクトを変更するには、このトピックを参照してください。

プロシージャ

重要

[BaseActivity] は埋め込みデータを収集するため、プライバシーポリシーに同意する前にアプリがプライベートデータを収集することになるため、プライバシーダイアログボックスをポップアップするアクティビティは、mPaaS の [BaseActivity] を継承できません。

  1. プライバシー権限ダイアログボックスの新しいコールバッククラスを作成します。新しいクラスを作成し、PrivacyListener API 操作を実装します。クラスの実装については、次のコードを参照してください。

    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 で確認できます。

      bundlename

    • 60 ベースラインでは、Portal プロジェクトのメインモジュールの下に res_slinks ファイルを作成し、リソースが配置されているバンドルの groupartifact をルールに従って res_slinks ファイルに書き込む必要があります。ルールは group-artifact.split("-")[0] です。コンテンツが長すぎる場合は、新しい行を追加する場合にコンテンツが正しいかどうかを確認する必要があります。例:

      group = com.mpaas.demo.materialdesign`
      `artifact = materialdesign-build`

      res_slinks ファイルに書き込まれる最終的な構成は com.mpaas.demo.materialdesign-materialdesign です。 1

      上記のコンテンツを完了すると、LayoutInflator.inflate(R.layout.xxx) を使用してリソースを直接呼び出すことができます。

  2. AndroidManifest にコールバッククラスを登録します。プライバシー権限ダイアログボックスのコールバッククラスを portalAndroidManifest に登録します。 value は、先ほど実装したコールバッククラスの完全なパスです。コードは次のように表示されます。完全なパスとクラス名は、独自のコールバッククラスに置き換える必要があることに注意してください。

     <!--プライバシー権限ダイアログボックスのコールバック-->
     <meta-data
         android:name="privacy.listener"
         android:value="com.mpaas.demo.launcher.MyPrivacyListener" />
  3. ポップアップボックスのインターセプトを開始します。MockLauncherApplicationAgentpreInit で、ダイアログボックスのインターセプトを追加します。コードは次のとおりです。

     //ユーザーにプライバシー権限ダイアログボックスを表示するかどうかを確認します
     if(! PrivacyUtil.isUserAgreed(getApplicationContext())){
         PermissionGate.getInstance().waitForUserConform(mContext, getMicroApplicationContext());
     }
  4. 最初のアクティビティを開始します。MockLauncherActivityAgentpostInit で、最初の 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);
     }