diff --git a/xwords4/android/XWords4/archive/R.java b/xwords4/android/XWords4/archive/R.java
index ef23003f4..646f75662 100644
--- a/xwords4/android/XWords4/archive/R.java
+++ b/xwords4/android/XWords4/archive/R.java
@@ -5040,6 +5040,7 @@ XLATE-ME
explanation of the above
*/
public static final int peek_other_summary=0x7f05015d;
+ public static final int perms_rationale_title=0x7f050361;
/**
Connected number[s]:
@@ -6887,9 +6888,7 @@ string name="str_robot_moved">O robĂ´ fez esta jogada:\u0020Android Permissions
- */
- public static final int toast_no_permission=0x7f050361;
+ public static final int toast_no_permission=0x7f050362;
/** Updates are available for one or more
installed wordlists. Would you like to download the new
version[s] of %1$s now?
diff --git a/xwords4/android/XWords4/res/values/strings.xml b/xwords4/android/XWords4/res/values/strings.xml
index 322d3a04c..5ea06ce06 100644
--- a/xwords4/android/XWords4/res/values/strings.xml
+++ b/xwords4/android/XWords4/res/values/strings.xml
@@ -2734,9 +2734,8 @@
deny permission.
- Crosswords needs your phone
- number to initialize a game played via SMS, and needs your
- permission now in order to access it.
+ To rematch a game using SMS
+ Crosswords needs permission to access your phone number.
Rematching this SMS-only
@@ -2755,7 +2754,7 @@
Not in Contacts
SMS send failed
-
+ Android Permissions
Permission not granted
diff --git a/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml b/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml
index 847dd4117..ed765036b 100644
--- a/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml
+++ b/xwords4/android/XWords4/res_src/values-ba_CK/strings.xml
@@ -2334,9 +2334,8 @@
e(.g. esuaceb uoy yap rof hcae ,)egassem ti\'s efas ot yltnenamrep
yned noissimrep.
- Sdrowssorc sdeen ruoy enohp
- rebmun ot ezilaitini a emag deyalp aiv ,SMs dna sdeen ruoy
- noissimrep won ni redro ot ssecca ti.
+ Ot hctamer a emag gnisu SMS
+ Sdrowssorc sdeen noissimrep ot ssecca ruoy enohp rebmun.
Gnihctamer siht YLNo-sms
emag si ton elbissop tuohtiw siht noissimrep.
@@ -2351,6 +2350,6 @@
Evomer SMS
Ton ni Stcatnoc
SMS dnes deliaf
-
+ Diordna Snoissimrep
Noissimrep ton detnarg
diff --git a/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml b/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml
index 52366afe2..6f8bb2a9a 100644
--- a/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml
+++ b/xwords4/android/XWords4/res_src/values-ca_PS/strings.xml
@@ -2334,9 +2334,8 @@
(E.G. BECAUSE YOU PAY FOR EACH MESSAGE), IT\'S SAFE TO PERMANENTLY
DENY PERMISSION.
- CROSSWORDS NEEDS YOUR PHONE
- NUMBER TO INITIALIZE A GAME PLAYED VIA SMS, AND NEEDS YOUR
- PERMISSION NOW IN ORDER TO ACCESS IT.
+ TO REMATCH A GAME USING SMS
+ CROSSWORDS NEEDS PERMISSION TO ACCESS YOUR PHONE NUMBER.
REMATCHING THIS SMS-ONLY
GAME IS NOT POSSIBLE WITHOUT THIS PERMISSION.
@@ -2351,6 +2350,6 @@
REMOVE SMS
NOT IN CONTACTS
SMS SEND FAILED
-
+ ANDROID PERMISSIONS
PERMISSION NOT GRANTED
diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardDelegate.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardDelegate.java
index 4d64fd940..5959fe21e 100644
--- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardDelegate.java
+++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardDelegate.java
@@ -736,6 +736,7 @@ public class BoardDelegate extends DelegateBase
public void onShouldShowRationale( Set perms )
{
makeOkOnlyBuilder( R.string.phone_state_rationale )
+ .setTitle( R.string.perms_rationale_title )
.setAction( Action.RETRY_PHONE_STATE_ACTION )
.setParams( action, info )
.show();
diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java
index 45ad86a41..a64598a27 100644
--- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java
+++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java
@@ -165,6 +165,7 @@ public class DlgDelegate {
protected int m_negButton = android.R.string.cancel;
protected Action m_action;
protected Object[] m_params;
+ protected int m_titleId = 0;
public DlgDelegateBuilder( String msg, Action action )
{ m_msgString = msg; m_action = action; }
@@ -196,11 +197,13 @@ public class DlgDelegate {
public OkOnlyBuilder(int msgId) { super( msgId, Action.SKIP_CALLBACK ); }
public OkOnlyBuilder setAction( Action action )
{ m_action = action; return this; }
+ public OkOnlyBuilder setTitle( int titleId )
+ { m_titleId = titleId; return this; }
@Override
public void show()
{
- showOKOnlyDialogThen( m_msgString, m_action, m_params );
+ showOKOnlyDialogThen( m_msgString, m_action, m_params, m_titleId );
}
}
@@ -208,11 +211,14 @@ public class DlgDelegate {
public ConfirmThenBuilder(String msg, Action action) {super(msg, action);}
public ConfirmThenBuilder(int msgId, Action action) {super(msgId, action);}
+ public ConfirmThenBuilder setTitle( int titleId )
+ { m_titleId = titleId; return this; }
+
@Override
public void show()
{
showConfirmThen( m_nakey, m_onNA, m_msgString, m_posButton,
- m_negButton, m_action, m_params );
+ m_negButton, m_action, m_titleId, m_params );
}
}
@@ -412,12 +418,13 @@ public class DlgDelegate {
}
private void showOKOnlyDialogThen( String msg, Action action,
- Object[] params )
+ Object[] params, int titleId )
{
// Assert.assertNull( m_dlgStates );
DlgState state = new DlgState( DlgID.DIALOG_OKONLY )
.setMsg( msg )
.setParams( params )
+ .setTitle( titleId )
.setAction(action);
addState( state );
showDialog( DlgID.DIALOG_OKONLY );
@@ -471,8 +478,9 @@ public class DlgDelegate {
}
}
- private void showConfirmThen( NAKey nakey, Runnable onNA, String msg, int posButton,
- int negButton, Action action, Object[] params )
+ private void showConfirmThen( NAKey nakey, Runnable onNA, String msg,
+ int posButton, int negButton, Action action,
+ int titleId, Object[] params )
{
if ( null != nakey ) {
Assert.assertNull( onNA );
@@ -484,6 +492,7 @@ public class DlgDelegate {
.setPosButton( posButton )
.setNegButton( negButton )
.setAction( action )
+ .setTitle( titleId )
.setParams( params );
addState( state );
showDialog( DlgID.CONFIRM_THEN );
@@ -662,7 +671,7 @@ public class DlgDelegate {
private Dialog createOKDialog( DlgState state, DlgID dlgID )
{
Dialog dialog = LocUtils.makeAlertBuilder( m_activity )
- .setTitle( R.string.info_title )
+ .setTitle( state.m_titleId == 0 ? R.string.info_title : state.m_titleId )
.setMessage( state.m_msg )
.setPositiveButton( android.R.string.ok, null )
.create();
@@ -711,7 +720,7 @@ public class DlgDelegate {
OnClickListener lstnr = mkCallbackClickListener( state, naView );
AlertDialog.Builder builder = LocUtils.makeAlertBuilder( m_activity )
- .setTitle( R.string.query_title )
+ .setTitle( state.m_titleId == 0 ? R.string.query_title : state.m_titleId )
.setView( naView )
.setPositiveButton( state.m_posButton, lstnr )
.setNegativeButton( state.m_negButton, lstnr );
diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgState.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgState.java
index 3244a21e1..74f06e5e7 100644
--- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgState.java
+++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgState.java
@@ -37,6 +37,7 @@ public class DlgState implements Parcelable {
// These can't be serialized!!!!
public Object[] m_params;
public Runnable m_onNAChecked;
+ public int m_titleId;
public DlgState( DlgID dlgID )
{
@@ -59,6 +60,8 @@ public class DlgState implements Parcelable {
{ m_posButton = id; return this; }
public DlgState setNegButton( int id )
{ m_negButton = id; return this; }
+ public DlgState setTitle( int id )
+ { m_titleId = id; return this; }
public int describeContents() {
return 0;
@@ -70,6 +73,7 @@ public class DlgState implements Parcelable {
out.writeInt( m_negButton );
out.writeInt( null == m_action ? -1 : m_action.ordinal() );
out.writeInt( m_prefsKey );
+ out.writeInt( m_titleId );
out.writeString( m_msg );
}
@@ -82,6 +86,7 @@ public class DlgState implements Parcelable {
int tmp = in.readInt();
Action action = 0 > tmp ? null : Action.values()[tmp];
int prefsKey = in.readInt();
+ int titleId = in.readInt();
String msg = in.readString();
DlgState state = new DlgState(id)
.setMsg( msg )
diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListDelegate.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListDelegate.java
index 302343096..8ff7c31f5 100644
--- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListDelegate.java
+++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListDelegate.java
@@ -2189,7 +2189,7 @@ public class GamesListDelegate extends ListDelegateBase
String msg = getString( R.string.phone_lookup_rationale )
+ "\n\n" + getString( id );
makeConfirmThenBuilder( msg, Action.RETRY_REMATCH )
- // .setTitle( R.string.perms_rationale_title )
+ .setTitle( R.string.perms_rationale_title )
.setParams( gameName )
.show();
}
diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/SMSInviteDelegate.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/SMSInviteDelegate.java
index a07adb261..c7969a663 100644
--- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/SMSInviteDelegate.java
+++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/SMSInviteDelegate.java
@@ -338,6 +338,7 @@ public class SMSInviteDelegate extends InviteDelegate {
public void onShouldShowRationale( Set perms )
{
makeOkOnlyBuilder( R.string.contacts_rationale )
+ .setTitle( R.string.perms_rationale_title )
.setAction( Action.RETRY_CONTACTS_ACTION )
.show();
}