iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 实现隐私政策提示弹窗(完整版)
  • 274
分享到

Android 实现隐私政策提示弹窗(完整版)

androidandroidstudio隐私协议弹窗 2023-09-02 21:09:25 274人浏览 薄情痞子
摘要

Android studio版本:2021.2.1 例程名称:pravicydialog 功能:1、启动app后弹窗隐私协议2、屏蔽返回键3、再次启动不再显示隐私协议。 本例程的绝大部分代码来自下面链接,因为本人改了一些,增加了一些功

Android studio版本:2021.2.1

例程名称:pravicydialog

功能:1、启动app后弹窗隐私协议2、屏蔽返回键3、再次启动不再显示隐私协议。

本例程的绝大部分代码来自下面链接,因为本人改了一些,增加了一些功能,所以不有脸的算原创了。

下面这个例子是“正宗”app隐私协议实现方法,而且协议内容使用的是txt格式文件,据说如果使用html格式文件(WEBview),各大平台在审核的时候大概率无法通过,但协议内容的还应该有更详细协议及说明的链接,我没做,暂时还没学会,会了再修改一下。

Android 实现隐私政策提示弹窗

对原作者表示感谢!

直接上代码:

MainActivity.java

package com.example.pravicydialog;import androidx.appcompat.app.AppCompatActivity;import android.app.AlertDialog;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.LayoutInflater;import android.view.View;import android.view.WindowManager;import android.widget.TextView;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;public class MainActivity extends AppCompatActivity {    Dialog dialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        PravicyCheck();    }    public void onClickAgree(View v)    {        dialog.dismiss();        //下面将已阅读标志写入文件,再次启动的时候判断是否显示。        this.getSharedPreferences("file", Context.MODE_PRIVATE).edit()                .putBoolean("AGREE", true)                .apply();    }    public void onClickDisagree(View v)    {        System.exit(0);//退出软件    }    public void showPrivacy(String privacyFileName){        String str = initAssets(privacyFileName);        final View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog_privacy_show, null);        TextView tv_title = (TextView) inflate.findViewById(R.id.tv_title);        tv_title.setText("隐私政策授权提示");        TextView tv_content = (TextView) inflate.findViewById(R.id.tv_content);        tv_content.setText(str);        dialog = new AlertDialog                .Builder(MainActivity.this)                .setView(inflate)                .show();        // 通过WindowManager获取        DisplayMetrics dm = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(dm);        final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();        params.width = dm.widthPixels*4/5;        params.height = dm.heightPixels*1/2;        dialog.setCancelable(false);//屏蔽返回键        dialog.getWindow().setAttributes(params);        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);    }        public String initAssets(String fileName) {        String str = null;        try {            InputStream inputStream = getAssets().open(fileName);            str = getString(inputStream);        } catch (IOException e1) {            e1.printStackTrace();        }        return str;    }    public static String getString(InputStream inputStream) {        InputStreamReader inputStreamReader = null;        try {            inputStreamReader = new InputStreamReader(inputStream, "UTF-8");        } catch (UnsupportedEncodingException e1) {            e1.printStackTrace();        }        BufferedReader reader = new BufferedReader(inputStreamReader);        StringBuffer sb = new StringBuffer("");        String line;        try {            while ((line = reader.readLine()) != null) {                sb.append(line);                sb.append("\n");            }        } catch (IOException e) {            e.printStackTrace();        }        return sb.toString();    }    public void PravicyCheck(){        Boolean status =this.getSharedPreferences("file",Context.MODE_PRIVATE)                .getBoolean("AGREE",false);        if (status==true){        }else{            showPrivacy("privacy.txt");//放在assets目录下的隐私政策文本文件        }    }}

说明:

   dialog.setCancelable(false);屏蔽返回键

将已阅读标志写入文件,再次启动的时候判断是否显示。

preferences用法见,实现不同,原理一样:分享一个SharedPreferences的工具类,方便保存数据

this.getSharedPreferences("file", Context.MODE_PRIVATE).edit()                .putBoolean("AGREE", true)                .apply();

判断是否是第一次启动代码块:

 public void PravicyCheck(){        //读标志        Boolean status =this.getSharedPreferences("file",Context.MODE_PRIVATE)                .getBoolean("AGREE",false);        if (status==true){        //如果status为true,不显示对话框,直接进主页面。        }else{            //如果status不为true显示对话框            showPrivacy("privacy.txt");//放在assets目录下的隐私政策文本文件        }

activity_main.xml(这个是主页面,可以什么都不放,我放了一个textview)

    

  dialog_privacy_show.xml(对话框)

                                                                                            

 button_shape.xml(按钮形状等属性)

                        

 dialog_privacy_shape.xml(对话框属性)

                

各个文件位置如图:

最后动图:

来源地址:https://blog.csdn.net/kim5659/article/details/128787477

--结束END--

本文标题: Android 实现隐私政策提示弹窗(完整版)

本文链接: https://www.lsjlt.com/news/391513.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作