K-9 Mail now opens the Accounts Activity when started with an Intent
with an enclosed URI with a content type of application/x-k9settings. This allows a user to bootstrap K-9 Mail configuration by email a settings file from one device to another, perhaps using a GMail account on the receiving end.
This commit is contained in:
parent
d9cb84047b
commit
107408c0d9
3 changed files with 29 additions and 3 deletions
|
@ -75,6 +75,12 @@
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<data android:mimeType="application/x-k9settings" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
|
|
|
@ -22,6 +22,7 @@ import android.webkit.WebView;
|
||||||
import android.widget.*;
|
import android.widget.*;
|
||||||
import android.widget.AdapterView.AdapterContextMenuInfo;
|
import android.widget.AdapterView.AdapterContextMenuInfo;
|
||||||
import android.widget.AdapterView.OnItemClickListener;
|
import android.widget.AdapterView.OnItemClickListener;
|
||||||
|
|
||||||
import com.fsck.k9.*;
|
import com.fsck.k9.*;
|
||||||
import com.fsck.k9.helper.SizeFormatter;
|
import com.fsck.k9.helper.SizeFormatter;
|
||||||
import com.fsck.k9.activity.setup.AccountSettings;
|
import com.fsck.k9.activity.setup.AccountSettings;
|
||||||
|
@ -30,6 +31,7 @@ import com.fsck.k9.activity.setup.Prefs;
|
||||||
import com.fsck.k9.controller.MessagingController;
|
import com.fsck.k9.controller.MessagingController;
|
||||||
import com.fsck.k9.controller.MessagingListener;
|
import com.fsck.k9.controller.MessagingListener;
|
||||||
import com.fsck.k9.mail.Flag;
|
import com.fsck.k9.mail.Flag;
|
||||||
|
import com.fsck.k9.mail.internet.MimeUtility;
|
||||||
import com.fsck.k9.view.ColorChip;
|
import com.fsck.k9.view.ColorChip;
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
@ -238,7 +240,23 @@ public class Accounts extends K9ListActivity implements OnItemClickListener, OnC
|
||||||
intent.putExtra(EXTRA_STARTUP, false);
|
intent.putExtra(EXTRA_STARTUP, false);
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNewIntent(Intent intent)
|
||||||
|
{
|
||||||
|
Uri uri = intent.getData();
|
||||||
|
Log.i(K9.LOG_TAG, "Accounts Activity got uri " + uri);
|
||||||
|
if (uri != null) {
|
||||||
|
ContentResolver contentResolver = getContentResolver();
|
||||||
|
|
||||||
|
Log.i(K9.LOG_TAG, "Accounts Activity got content of type " + contentResolver.getType(uri));
|
||||||
|
|
||||||
|
String contentType = contentResolver.getType(uri);
|
||||||
|
if (MimeUtility.K9_SETTINGS_MIME_TYPE.equals(contentType)) {
|
||||||
|
onImport(uri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
|
@ -254,7 +272,8 @@ public class Accounts extends K9ListActivity implements OnItemClickListener, OnC
|
||||||
|
|
||||||
Account[] accounts = Preferences.getPreferences(this).getAccounts();
|
Account[] accounts = Preferences.getPreferences(this).getAccounts();
|
||||||
Intent intent = getIntent();
|
Intent intent = getIntent();
|
||||||
boolean startup = intent.getBooleanExtra(EXTRA_STARTUP, true);
|
boolean startup = intent.getData() == null && intent.getBooleanExtra(EXTRA_STARTUP, true);
|
||||||
|
onNewIntent(intent);
|
||||||
if (startup && K9.startIntegratedInbox()) {
|
if (startup && K9.startIntegratedInbox()) {
|
||||||
onOpenAccount(integratedInboxAccount);
|
onOpenAccount(integratedInboxAccount);
|
||||||
finish();
|
finish();
|
||||||
|
@ -280,6 +299,7 @@ public class Accounts extends K9ListActivity implements OnItemClickListener, OnC
|
||||||
|
|
||||||
restoreAccountStats(icicle);
|
restoreAccountStats(icicle);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|
|
@ -19,7 +19,7 @@ import java.nio.charset.Charset;
|
||||||
public class MimeUtility {
|
public class MimeUtility {
|
||||||
public static final String DEFAULT_ATTACHMENT_MIME_TYPE = "application/octet-stream";
|
public static final String DEFAULT_ATTACHMENT_MIME_TYPE = "application/octet-stream";
|
||||||
|
|
||||||
|
public static final String K9_SETTINGS_MIME_TYPE = "application/x-k9settings";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* http://www.w3schools.com/media/media_mimeref.asp
|
* http://www.w3schools.com/media/media_mimeref.asp
|
||||||
|
@ -341,7 +341,7 @@ public class MimeUtility {
|
||||||
{ "jpm", "video/jpm"},
|
{ "jpm", "video/jpm"},
|
||||||
{ "js", "application/x-javascript"},
|
{ "js", "application/x-javascript"},
|
||||||
{ "json", "application/json"},
|
{ "json", "application/json"},
|
||||||
{ "k9s", "application/x-k9settings"},
|
{ "k9s", K9_SETTINGS_MIME_TYPE},
|
||||||
{ "kar", "audio/midi"},
|
{ "kar", "audio/midi"},
|
||||||
{ "karbon", "application/vnd.kde.karbon"},
|
{ "karbon", "application/vnd.kde.karbon"},
|
||||||
{ "kfo", "application/vnd.kde.kformula"},
|
{ "kfo", "application/vnd.kde.kformula"},
|
||||||
|
|
Loading…
Reference in a new issue