Android

【Android】レビューをお願いするサンプル

レビューをお願いするのに、
必要なものを作成しました。
サンプルなので、あとはカスタムしてください。

必要な処理

・ダイアログ
・GooglePlayに飛ばす処理

コード

ダイアログには、ボタン3つ用意しました。
「レビューをする」「あとでレビューをする」「レビューをしない」の3つです。
処理では、「レビューをする」はアプリページに飛ばします。
他2つはダイアログを閉じるだけです。
実際に作成するなら、sharedPreferenceに保存するなりして、
「あとでレビューをする」と「レビューをしない」を設定すればいいかなと思います。
review_dialog_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:text="このアプリのレビューを\nお願いできますでしょうか?"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@android:color/black" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="240dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp">

        <Button
            android:id="@+id/top_button"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_above="@+id/center_button"
            android:layout_marginBottom="10dp"
            android:background="@color/lightgrey"
            android:text="レビューをする。"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <Button
            android:id="@+id/center_button"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_centerInParent="true"
            android:background="@color/lightgrey"
            android:text="あとでレビューをする。"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <Button
            android:id="@+id/bottom_button"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_below="@+id/center_button"
            android:layout_marginTop="10dp"
            android:background="@color/lightgrey"
            android:text="レビューをしない。"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </RelativeLayout>

</LinearLayout>

ReviewDialogFragment.java

public class ReviewDialogFragment extends DialogFragment {

    public interface ReviewDialogFragmentListener extends Serializable {
        void onDoReviewButtonClick();
    }

    private ReviewDialogFragmentListener listener;

    public static ReviewDialogFragment newInstance(ReviewDialogFragmentListener listener) {
        ReviewDialogFragment dialogFragment = new ReviewDialogFragment();
        Bundle args = new Bundle();
        args.putSerializable("listener", listener);
        dialogFragment.setArguments(args);
        return dialogFragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(getArguments() != null) {
            listener = 
                    (ReviewDialogFragmentListener)getArguments().getSerializable("listener");
        }
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        Activity activity = getActivity();
        AlertDialog.Builder dialog = new AlertDialog.Builder(activity);

        View dialogView = 
                LayoutInflater.from(activity).inflate(R.layout.review_dialog_layout ,null);

        Button topButton = 
                dialogView.findViewById(R.id.top_button);
        Button centerButton =
                dialogView.findViewById(R.id.center_button);
        Button bottomButton =
                dialogView.findViewById(R.id.bottom_button);

        topButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onDoReviewButtonClick();
            }
        });

        centerButton.setOnClickListener(cancelClickListener);
        bottomButton.setOnClickListener(cancelClickListener);

        dialog.setView(dialogView);

        setCancelable(false);

        return dialog.create();
    }

    private View.OnClickListener cancelClickListener = 
            new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            dismiss();
        }
    };
}

MainActivityは、ダイアログの「レビューする」をクリックしたときのコールバックを受け取り、
アプリのページに飛ばすように処理をしています。
MainActivity.java

public class MainActivity extends AppCompatActivity
        implements ReviewDialogFragment.ReviewDialogFragmentListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ReviewDialogFragment reviewDialogFragment =
                ReviewDialogFragment.newInstance(this);
        reviewDialogFragment.show(getFragmentManager(), "ReviewDialogFragment");
    }

    @Override
    public void onDoReviewButtonClick() {
        Intent intent = new Intent(
                Intent.ACTION_VIEW,
                Uri.parse("https://play.google.com/store/apps/details?id=com.fureate.calculator"));
        startActivity(intent);
    }
}

完成したスクリーンショットです。

「レビューをする」をクリック後です。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です