update links in README
update to latest appcompat_v7 (v21.0.3)
purge defunct XMPP cert pin for dukgo.com, the main COMODO one covers this

It seems that the dukgo.com certificate that included this signing cert has
been replaced by one that no longer is signed by this cert.  The new one is
signed by the higher level COMODO cert that is already included:

SubjectDN: CN=COMODO RSA Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB
IssuerDN: CN=AddTrust External CA Root, OU=AddTrust External TTP Network, O=AddTrust AB, C=SE
Fingerprint: F5AD0BCC1AD56CD150725B1C866C30AD92EF21B0
SPKI Pin: 6E584E3375BD57F6D5421B1601C2D8C0F53A9F6E
make Orbot install link a direct link to app in Google Play and F-Droid

This market: URI syntax takes the user directly to the page for the app
itself, based on package ID, rather than doing a search.  This link also
works with F-Droid.

https://developer.android.com/distribute/tools/promote/linking.html
include languageButton in landscape layout

Fix a stupid mistake on my part, I added a new button to the regular layout
but not the landscape version of the layout.

java.lang.RuntimeException: Unable to start activity ComponentInfo{info.guardianproject.otr.app.im/info.guardianproject.otr.app.im.app.LockScreenActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at info.guardianproject.otr.app.im.app.LockScreenActivity.onCreate(LockScreenActivity.java:96)
at android.app.Activity.performCreate(Activity.java:4492)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
... 11 more
sync up file layout with portrait version for easy comparing
fix crash when timer runs XmppConnection.handlePresenceChanged()

fixes #4276 https://dev.guardianproject.info/issues/4276

java.lang.NullPointerException
at info.guardianproject.otr.app.im.plugin.xmpp.XmppAddress.<init>(XmppAddress.java:26)
at info.guardianproject.otr.app.im.plugin.xmpp.XmppConnection.handlePresenceChanged(XmppConnection.java:2876)
at info.guardianproject.otr.app.im.plugin.xmpp.XmppConnection.access$2800(XmppConnection.java:130)
at info.guardianproject.otr.app.im.plugin.xmpp.XmppConnection$12.run(XmppConnection.java:3015)
at java.util.Timer$TimerImpl.run(Timer.java:284)
handle "opaque" xmpp: URIs from QR scan

unfortunately, Uri.getQueryParameter() only works with "hierarchical" URIs.

This fixes this crash:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=49374, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {info.guardianproject.otr.app.im/info.guardianproject.otr.app.im.app.NewChatActivity}: java.lang.UnsupportedOperationException: This isn't a hierarchical URI.
at android.app.ActivityThread.deliverResults(ActivityThread.java:3432)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3475)
at android.app.ActivityThread.access$1300(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsupportedOperationException: This isn't a hierarchical URI.
at android.net.Uri.getQueryParameter(Uri.java:1662)
at info.guardianproject.otr.app.im.app.NewChatActivity.onActivityResult(NewChatActivity.java:1349)
at android.app.Activity.dispatchActivityResult(Activity.java:5446)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3428)
... 11 more
fix crash when setting presence to "not subscribed"

java.lang.IllegalArgumentException: invalid presence status value
at info.guardianproject.otr.app.im.engine.Presence.setStatus(Presence.java:145)
at info.guardianproject.otr.app.im.engine.Presence.<init>(Presence.java:71)
at info.guardianproject.otr.app.im.engine.Presence.<init>(Presence.java:66)
at info.guardianproject.otr.app.im.plugin.xmpp.XmppConnection.handlePresenceChanged(XmppConnection.java:2883)
at info.guardianproject.otr.app.im.plugin.xmpp.XmppConnection.access$2800(XmppConnection.java:130)
at info.guardianproject.otr.app.im.plugin.xmpp.XmppConnection$12.run(XmppConnection.java:3015)
at java.util.Timer$TimerImpl.run(Timer.java:284)
remove defunct XMPP server from recommended list: rkquery.de

rkquery.de has been offline since 20 Apr 2014 00:23 UTC according to
http://www.jabberes.org/servers/
test whether pinned domains are working properly with the pins

This sets up a fake, simplified trust manager with only AndroidPinning,
then tries to connect to each of the XMPP servers that should be pinned:
Google, Facebook, jabber.org, and the list of recommended servers.
Merge branch 'eighthave-more-fixes-and-tls-test'