Мы должны показать диалог лицензионного соглашения, когда пользователь использовать приложение в первый раз, теперь у меня есть два вопроса по этому поводу:показать лицензионное соглашение в андроиде приложения
-Где поставить этот диалог?
Добавить другое мероприятие или поместить диалоговое окно только на MainActivity
, который является активностью запуска?
2 Как закрыть приложение, если пользователь попал «Отклонить»
После того, как пользователь нажал на кнопку «Отклонить», что означает, что он/она не согласен нашу лицензию, то мы должны выйти из приложения полностью. Как это сделать?
Согласно ответу «Ахмад», я решу, чтобы открыть диалоговое окно или нет в начале деятельности (onCreate
метод):
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
this.setupLicense();
this.setupViews();
this.initSomeJob();
}
private void setupLicense() {
SharedPreferences setting = getSharedPreferences(IConstant.Map_License, 0);
boolean mapLicenseAccept = setting.getBoolean(IConstant.Map_License, false);
if (!mapLicenseAccept) {
//user does not accept the license yet, we will open the dialog
showDialog(Dialog_Map_License);
}
}
@Override
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
switch (id) {
case Dialog_Map_License:
builder.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle(R.string.map_license_title)
.setMessage(R.string.map_license_content)
.setPositiveButton(R.string.map_license_accept, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//License accepted, persisted it.
SharedPreferences settings = getSharedPreferences(IConstant.Map_License, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(IConstant.Map_License, true);
editor.commit();
}
})
.setNegativeButton(R.string.map_license_reject, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//do nothing and exit
Process.killProcess(Process.myPid());
System.exit(0);
}
});
Dialog target = builder.create();
target.setCanceledOnTouchOutside(false);
return target;
}
return null;
}
Но теперь я встретить два проблема:
1 Событие Я выбираю кнопку «Принять», как только я открою свое приложение во второй раз, откроется диалоговое окно.
кажется, что следующий код не работает:
editor.putBoolean(IConstant.Map_License, true);
editor.commit();
2 Когда я показываю диалог, код:
this.setupViews();
this.initSomeJob();
все равно будет работать, они не заблокированы, которая из ожидается, так как ничего не должно быть сделано, прежде чем пользователь нажмет кнопку «Принять».
Любая идея исправить?
Ahmad, 1: Вы имеете в виду, что добавьте лицензионный диалог как часть «MainActivity» и отобразите или спрячете их соответственно? 2: Что вы подразумеваете под «завершением деятельности»? И «отправить лицензионное соглашение на игру в магазин» вы упомянули отлично, я попробую оба. :) – hguser
: Я обновляю сообщение, вы можете проверить? – hguser