package com.novoda.defaultsmsapp;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.provider.Telephony;
import android.view.View;
public class MainActivity extends Activity {
private static final String DEVICE_DEFAULT_SMS_PACKAGE_KEY = "com.novoda.defaultsmsapp.deviceDefaultSmsPackage";
private static final String INVALID_PACKAGE = "invalid_package";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpViews();
saveDeviceDefaultSmsPackage();
}
private void saveDeviceDefaultSmsPackage() {
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
if (hasNoPreviousSmsDefaultPackage(preferences)) {
String defaultSmsPackage = Telephony.Sms.getDefaultSmsPackage(this);
preferences.edit().putString(DEVICE_DEFAULT_SMS_PACKAGE_KEY, defaultSmsPackage).apply();
}
}
private boolean hasNoPreviousSmsDefaultPackage(SharedPreferences preferences) {
return !preferences.contains(DEVICE_DEFAULT_SMS_PACKAGE_KEY);
}
private void setUpViews() {
findViewById(R.id.set_as_default).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setDeviceDefaultSmsPackage(getPackageName());
}
});
findViewById(R.id.restore_default).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setDeviceDefaultSmsPackage(getPreviousSmsDefaultPackage());
}
});
}
private void setDeviceDefaultSmsPackage(String packageName) {
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName);
startActivity(intent);
}
private String getPreviousSmsDefaultPackage() {
return getPreferences(MODE_PRIVATE).getString(DEVICE_DEFAULT_SMS_PACKAGE_KEY, INVALID_PACKAGE);
}
}