Prompt user for APN details when missing.
If TextSecure is running on a device without APN details, we prompt the user to manually specify them when the user goes to send an MMS message.pull/1/head
parent
fa8208de33
commit
07c59d969a
@ -0,0 +1,91 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:fillViewport="true"
|
||||||
|
android:background="@drawable/background_pattern_repeat">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:gravity="center" >
|
||||||
|
|
||||||
|
<LinearLayout android:paddingRight="16dip"
|
||||||
|
android:paddingLeft="16dip"
|
||||||
|
android:paddingTop="10dip"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView style="@style/Registration.Description"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="16dip"
|
||||||
|
android:text="@string/prompt_apn_activity__textsecure_requires_apn_settings_to_deliver_media_messages_via_your_wireless_carrier"/>
|
||||||
|
|
||||||
|
<TextView style="@style/Registration.Description"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="16dip"
|
||||||
|
android:text="@string/prompt_apn_activity__to_send_media_messages_please_complete_the_necessary_apn_information_below"/>
|
||||||
|
|
||||||
|
<TextView style="@style/Registration.Label"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:text="@string/prompt_apn_activity__mmsc_url_required"/>
|
||||||
|
|
||||||
|
<EditText android:id="@+id/mmsc_url"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:layout_marginBottom="10dip" />
|
||||||
|
|
||||||
|
<TextView style="@style/Registration.Label"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:text="@string/prompt_apn_activity__mms_proxy_host_optional"/>
|
||||||
|
|
||||||
|
<EditText android:id="@+id/mms_proxy_host"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:layout_marginBottom="10dip" />
|
||||||
|
|
||||||
|
<TextView style="@style/Registration.Label"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:text="@string/prompt_apn_activity__mms_proxy_port_optional"/>
|
||||||
|
|
||||||
|
<EditText android:id="@+id/mms_proxy_port"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="10dip"
|
||||||
|
android:inputType="number"
|
||||||
|
android:singleLine="true" />
|
||||||
|
|
||||||
|
<LinearLayout android:orientation="horizontal"
|
||||||
|
android:gravity="center"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dip"
|
||||||
|
android:layout_marginBottom="20dip">
|
||||||
|
|
||||||
|
<Button style="@android:style/Widget.Button"
|
||||||
|
android:id="@+id/cancel_button"
|
||||||
|
android:text="@android:string/cancel"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginRight="7dip"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"/>
|
||||||
|
|
||||||
|
<Button style="@android:style/Widget.Button"
|
||||||
|
android:id="@+id/ok_button"
|
||||||
|
android:text="@android:string/ok"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"/>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
</FrameLayout>
|
||||||
|
</ScrollView>
|
@ -0,0 +1,86 @@
|
|||||||
|
package org.thoughtcrime.securesms;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import org.thoughtcrime.securesms.util.Util;
|
||||||
|
|
||||||
|
public class PromptApnActivity extends PassphraseRequiredSherlockActivity {
|
||||||
|
|
||||||
|
private EditText mmsc;
|
||||||
|
private EditText proxyHost;
|
||||||
|
private EditText proxyPort;
|
||||||
|
|
||||||
|
private Button okButton;
|
||||||
|
private Button cancelButton;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle bundle) {
|
||||||
|
super.onCreate(bundle);
|
||||||
|
setContentView(R.layout.prompt_apn_activity);
|
||||||
|
|
||||||
|
initializeResources();
|
||||||
|
initializeValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeValues() {
|
||||||
|
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
|
mmsc.setText(preferences.getString(ApplicationPreferencesActivity.MMSC_HOST_PREF, ""));
|
||||||
|
proxyHost.setText(preferences.getString(ApplicationPreferencesActivity.MMSC_PROXY_HOST_PREF, ""));
|
||||||
|
proxyPort.setText(preferences.getString(ApplicationPreferencesActivity.MMSC_PROXY_PORT_PREF, ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeResources() {
|
||||||
|
this.mmsc = (EditText)findViewById(R.id.mmsc_url);
|
||||||
|
this.proxyHost = (EditText)findViewById(R.id.mms_proxy_host);
|
||||||
|
this.proxyPort = (EditText)findViewById(R.id.mms_proxy_port);
|
||||||
|
this.okButton = (Button)findViewById(R.id.ok_button);
|
||||||
|
this.cancelButton = (Button)findViewById(R.id.cancel_button);
|
||||||
|
|
||||||
|
this.okButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
handleSettings();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.cancelButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleSettings() {
|
||||||
|
if (Util.isEmpty(mmsc)) {
|
||||||
|
Toast.makeText(this, R.string.PromptApnActivity_you_must_specify_an_mmsc_url_for_your_carrier, Toast.LENGTH_LONG).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(this).edit()
|
||||||
|
.putBoolean(ApplicationPreferencesActivity.USE_LOCAL_MMS_APNS_PREF, true)
|
||||||
|
.putString(ApplicationPreferencesActivity.MMSC_HOST_PREF, mmsc.getText().toString().trim())
|
||||||
|
.putString(ApplicationPreferencesActivity.MMSC_PROXY_HOST_PREF, proxyHost.getText().toString().trim())
|
||||||
|
.putString(ApplicationPreferencesActivity.MMSC_PROXY_PORT_PREF, proxyPort.getText().toString().trim())
|
||||||
|
.commit();
|
||||||
|
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle(R.string.PromptApnActivity_mms_settings_updated);
|
||||||
|
builder.setMessage(R.string.PromptApnActivity_you_can_modify_these_values_from_the_textsecure_settings_menu_at_any_time_);
|
||||||
|
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.show();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue