irpas技术客

Android用户协议与隐私政策实现(完整版)_鑫鑫(star)_android 隐私政策

网络 8029

1、概述

哈喽,我是鑫鑫,这也是我第一次写博客。

原理也很简单

首先

让程序检测你是不是第一次使用app, 如果是则在activity_main.xml中显示dialog(也就是MainActivity.java中的dialog_privacy_show.xml)

,并实现程序的跳转至主程序SecondActivity.xml

对应的SecondActivity.java代码点我传送

如果是第二次启动,则不弹窗,直接进入主程序SecondActivity.xml

所需的资源文件点我跳转

2、代码

新创建一个

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" android:gravity="center"> <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="wrap_content" android:text="这里可以自己填充一下"/> </LinearLayout>

以下是activity_main对应的Java代码

MainActivity.java package com.mycompany.myapp; import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.text.SpannableString; import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import com.mycompany.myapp.R; public class MainActivity extends Activity { SharedPreferences sharedPreferences; AlertDialog dialog; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getActionBar().hide(); date(); } private void date() { SharedPreferences shared= getSharedPreferences("is", MODE_PRIVATE); boolean isfer=shared.getBoolean("isfer", true); editor = shared.edit(); if(isfer){ //第一次进入跳转 showDialog(); }else{ //第二次 Intent ok = new Intent(MainActivity.this,SecondActivity.class); startActivity(ok); finish(); } } private void showDialog() { AlertDialog.Builder builder= new AlertDialog.Builder(this); //获取界面 View view= LayoutInflater.from(this).inflate(R.layout.dialog_privacy_show, null); //将界面填充到AlertDiaLog容器并去除边框 builder.setView(view); //初始化控件 TextView but_ok= view.findViewById(R.id.but_ok); TextView but_return= view.findViewById(R.id.but_return); TextView YinSi= view.findViewById(R.id.YinSi); TextView YongHu= view.findViewById(R.id.YongHu); //取消点击外部消失弹窗 builder.setCancelable(false); //创建AlertDiaLog builder.create(); //AlertDiaLog显示 final AlertDialog dialog= builder.show(); //设置AlertDiaLog宽高属性 // WindowManager.LayoutParams params = Objects.requireNonNull(customAlert.getWindow()).getAttributes(); // params.width = 200; // params.height = 200 ; // dialog.getWindow().setAttributes(params); // 移除dialog的decorview背景色 dialog.getWindow().getDecorView().setBackground(null); //设置自定义界面的点击事件逻辑 but_ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent ok = new Intent(MainActivity.this,SecondActivity.class); startActivity(ok); finish(); editor.putBoolean("isfer", false); editor.commit(); } }); but_return.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); YinSi.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,YinSi.class); startActivity(intent); } }); YongHu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,YongHu.class); startActivity(intent); } }); } } SecondActivity.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:gravity="center"> <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="wrap_content" android:text="Welcome"/> </LinearLayout> Second_Activity.java package com.mycompany.myapp; import android.app.Activity; import android.os.Bundle; public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.SecondActivity); } //里面的功能自己填充 } dialog_privacy_show.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:background="@drawable/fill_stroke"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:layout_width="38dp" android:layout_height="38dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:src="@drawable/ic_message_alert"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="22sp" android:textColor="#FF009688" android:textStyle="bold" android:layout_gravity="center|bottom" android:text="消息"/> </LinearLayout> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="20dp" android:paddingBottom="20dp" android:textColor="#5C5C5C" android:textSize="20sp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:text="我们极其重视用户协议和隐私协议, 请你仔细浏览下两份协议, 本协议在--这里可以填App名称--因为你之间产生法律效力, 意味着您完全同意并接受协议的全部条款。"/> <LinearLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:gravity="center"> <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:id="@+id/YinSi" android:text="用户协议"/> <View android:layout_height="match_parent" android:layout_width="30dp"/> <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:id="@+id/YongHu" android:text="隐私协议"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="1dp" android:background="#eee"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/but_return" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="16sp" android:gravity="center" android:textColor="#999" android:paddingTop="15dp" android:paddingBottom="15dp" android:text="取消"/> <LinearLayout android:layout_width="1dp" android:layout_height="match_parent" android:background="#eee"/> <TextView android:id="@+id/but_ok" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="16sp" android:gravity="center" android:paddingTop="15dp" android:paddingBottom="15dp" android:textColor="#FF009688" android:textStyle="bold" android:text="确定"/> </LinearLayout> </LinearLayout> ***以下的所有资源在drawable文件中创建*** fill_stroke.xml

对应dialog_privacy_show.xml代码

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <!--描边设置--> <stroke android:color="@android:color/darker_gray" android:width="1px" /> <!--填充设置--> <solid android:color="@android:color/white"/> <!--圆角设置--> <corners android:radius="15dp"/> </shape> ic_message_alert.xml

对应dialog_privacy_show.xml代码位

<?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportHeight="24" android:viewportWidth="24"> <path android:fillColor="#FF009688" android:pathData="M13,10H11V6H13M13,14H11V12H13M20,2H4A2,2 0,0 0,2 4V22L6,18H20A2,2 0,0 0,22 16V4C22,2.89 21.1,2 20,2Z"/> </vector>

以上就是全部的代码了,如果有什么bug反馈

以下是效果图

鑫鑫工具箱是我另外一个demo 现已更新至5.3版本 感兴趣的可以下载一下:https://url35.ctfile.com/f/35208035-542406936-22c4c8

(访问密码:5159)

我的邮箱:1402832033@qq.com有bug可以反馈。

我是鑫鑫,再见了。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #隐私政策