/*
* Copyright 2014 Jacob Klinker
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.klinker.android.messaging_sample;
import android.app.Activity;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.Telephony;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import com.klinker.android.logger.Log;
import com.klinker.android.logger.OnLogListener;
import com.klinker.android.send_message.ApnUtils;
import com.klinker.android.send_message.BroadcastUtils;
import com.klinker.android.send_message.Message;
import com.klinker.android.send_message.Transaction;
import com.klinker.android.send_message.Utils;
import java.util.ArrayList;
public class MainActivity extends Activity {
private Settings settings;
private Button setDefaultAppButton;
private Button selectApns;
private EditText fromField;
private EditText toField;
private EditText messageField;
private ImageView imageToSend;
private Button sendButton;
private RecyclerView log;
private LogAdapter logAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (PreferenceManager.getDefaultSharedPreferences(this)
.getBoolean("request_permissions", true) &&
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
startActivity(new Intent(this, PermissionActivity.class));
finish();
return;
}
setContentView(R.layout.activity_main);
initSettings();
initViews();
initActions();
initLogging();
BroadcastUtils.sendExplicitBroadcast(this, new Intent(), "test action");
}
private void initSettings() {
settings = Settings.get(this);
if (TextUtils.isEmpty(settings.getMmsc()) &&
Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
initApns();
}
}
private void initApns() {
ApnUtils.initDefaultApns(this, new ApnUtils.OnApnFinishedListener() {
@Override
public void onFinished() {
settings = Settings.get(MainActivity.this, true);
}
});
}
private void initViews() {
setDefaultAppButton = (Button) findViewById(R.id.set_as_default);
selectApns = (Button) findViewById(R.id.apns);
fromField = (EditText) findViewById(R.id.from);
toField = (EditText) findViewById(R.id.to);
messageField = (EditText) findViewById(R.id.message);
imageToSend = (ImageView) findViewById(R.id.image);
sendButton = (Button) findViewById(R.id.send);
log = (RecyclerView) findViewById(R.id.log);
}
private void initActions() {
if (Utils.isDefaultSmsApp(this)) {
setDefaultAppButton.setVisibility(View.GONE);
} else {
setDefaultAppButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setDefaultSmsApp();
}
});
}
selectApns.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
initApns();
}
});
fromField.setText(Utils.getMyPhoneNumber(this));
toField.setText(Utils.getMyPhoneNumber(this));
imageToSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toggleSendImage();
}
});
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendMessage();
}
});
log.setHasFixedSize(false);
log.setLayoutManager(new LinearLayoutManager(this));
logAdapter = new LogAdapter(new ArrayList<String>());
log.setAdapter(logAdapter);
}
private void initLogging() {
Log.setDebug(true);
Log.setPath("messenger_log.txt");
Log.setLogListener(new OnLogListener() {
@Override
public void onLogged(String tag, String message) {
//logAdapter.addItem(tag + ": " + message);
}
});
}
private void setDefaultSmsApp() {
setDefaultAppButton.setVisibility(View.GONE);
Intent intent =
new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
getPackageName());
startActivity(intent);
}
private void toggleSendImage() {
if (imageToSend.isEnabled()) {
imageToSend.setEnabled(false);
imageToSend.setAlpha(0.3f);
} else {
imageToSend.setEnabled(true);
imageToSend.setAlpha(1.0f);
}
}
public void sendMessage() {
new Thread(new Runnable() {
@Override
public void run() {
com.klinker.android.send_message.Settings sendSettings = new com.klinker.android.send_message.Settings();
sendSettings.setMmsc(settings.getMmsc());
sendSettings.setProxy(settings.getMmsProxy());
sendSettings.setPort(settings.getMmsPort());
sendSettings.setUseSystemSending(true);
Transaction transaction = new Transaction(MainActivity.this, sendSettings);
Message message = new Message(messageField.getText().toString(), toField.getText().toString());
if (imageToSend.isEnabled()) {
message.setImage(BitmapFactory.decodeResource(getResources(), R.drawable.android));
}
transaction.sendNewMessage(message, Transaction.NO_THREAD_ID);
}
}).start();
}
}