最终用户许可

来源:互联网 发布:网络鉴黄师 编辑:程序博客网 时间:2024/04/29 20:30

1EULA文件,将其添加到assets目录。

2、在应用程序中显示EULA。主要是在一个对话框中显示EULA文件内容。

Eula.java

public class EULA {

private static final String ASSET_EULA = "EULA";

private static final String PREFERENCE_EULA_ACCEPTED = "eula.accepted";

private static final String PREFERENCE_EULA = "eula";

/*

 * 用于让Activity知道何时接受了EULA的回调函数

 */

static interface OnEulaAgreedTo {

// 在用户接收eul后调用,同时对话框结束

void OnEulaAgreedTo();

}

/*

 * 用于显示EULA,此函数在你的主Activity的OnCreate()函数中调用

 * 

 * @param activity 如果用户拒绝EULA,需要结束的Activity

 * 

 * @return 用户是否接受

 */

static boolean show(final Activity activity) {

final SharedPreferences preferences = activity.getSharedPreferences(

PREFERENCE_EULA, Activity.MODE_PRIVATE);

if (!preferences.getBoolean(PREFERENCE_EULA_ACCEPTEDfalse)) {

final AlertDialog.Builder builder = new AlertDialog.Builder(

activity);

builder.setTitle(R.string.eula_title);

builder.setCancelable(true);

builder.setPositiveButton(R.string.eula_accept,

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

accept(preferences);

if (activity instanceof OnEulaAgreedTo) {

((OnEulaAgreedTo) activity).OnEulaAgreedTo();

}

}

});

builder.setNegativeButton(R.string.eula_refuse,

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

refuse(activity);

}

});

builder.setOnCancelListener(new DialogInterface.OnCancelListener() {

@Override

public void onCancel(DialogInterface dialog) {

refuse(activity);

}

});

builder.setMessage(readEula(activity));

builder.create().show();

return false;

}

return true;

}

private static void accept(SharedPreferences preferences) {

// 获得Editor,写入键值对

preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTEDtrue).commit();

}

private static void refuse(Activity activity) {

activity.finish();

}

// 读取Eula文件

private static CharSequence readEula(Activity activity) {

BufferedReader in = null;

try {

in = new BufferedReader(new InputStreamReader(activity.getAssets()

.open("ASSET_EULA")));

String line;

StringBuilder buffer = new StringBuilder();

while ((line = in.readLine()) != null)

buffer.append(line).append('/n');

return buffer;

catch (IOException e) {

return "";

finally {

if (in != null) {

try {

in.close();

catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

接下来在应用程序的主ActivityonCreate()函数中调用Eula.showthis)