diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 74878b4..ee51656 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,15 +4,11 @@
package="com.samourai.txtenna">
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/samourai/sms/SMSReceiver.java b/app/src/main/java/com/samourai/sms/SMSReceiver.java
deleted file mode 100755
index 4913139..0000000
--- a/app/src/main/java/com/samourai/sms/SMSReceiver.java
+++ /dev/null
@@ -1,221 +0,0 @@
-package com.samourai.sms;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.telephony.SmsMessage;
-import android.util.Log;
-import android.widget.Toast;
-
-import com.samourai.txtenna.payload.PayloadFactory;
-
-import com.google.gson.Gson;
-import com.samourai.txtenna.utils.TransactionHandler;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-
-public class SMSReceiver extends BroadcastReceiver {
-
- /** TAG used for Debug-Logging */
- protected static final String LOG_TAG = "SMSReceiver";
-
- /** The Action fired by the Android-System when a SMS was received.
- * We are using the Default Package-Visibility */
- private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
-
- private static HashMap>> incoming = new HashMap>>();
-
- private static List seen = new ArrayList();
-
- private static TransactionHandler transactionHandler = null;
-
- public SMSReceiver() {
- ;
- }
-
- public SMSReceiver(TransactionHandler transactionHandler) {
- this.transactionHandler = transactionHandler;
- }
-
- // @Override
- public void onReceive(final Context context, Intent intent) {
-
- if ((intent.getAction().equals(ACTION) || intent.getAction().contains("SMS_RECEIVED"))) {
-
- StringBuilder sb = new StringBuilder();
- Bundle bundle = intent.getExtras();
-
- Handler handler = new Handler();
-
- if (bundle != null) {
-
- Object[] pdusObj = (Object[]) bundle.get("pdus");
- SmsMessage[] messages = new SmsMessage[pdusObj.length];
- for(int i = 0; i < pdusObj.length; i++) {
- messages[i] = SmsMessage.createFromPdu((byte[])pdusObj[i]);
- }
-
- String incomingTelNo = null;
- String id = null;
- for(SmsMessage currentMessage : messages) {
- final String msg = currentMessage.getDisplayMessageBody().trim();
- incomingTelNo = currentMessage.getDisplayOriginatingAddress();
-
- if(seen.contains(incomingTelNo + ":" + msg)) {
- continue;
- }
- else {
- seen.add(incomingTelNo + ":" + msg);
- }
-
- Log.d("SMSReceiver", incomingTelNo + ":" + msg);
-
- //
- // test for segment count, if present assume Segment0
- //
- String i = null;
- int c = -1;
- PayloadFactory.Seg0 seg0 = null;
- PayloadFactory.SegN segn = null;
- Gson gson = new Gson();
- if(msg.contains("\"s\":")) {
- seg0 = gson.fromJson(msg, PayloadFactory.Seg0.class);
- c = 0;
- i = seg0.i;
- }
- else {
- segn = gson.fromJson(msg, PayloadFactory.SegN.class);
- c = segn.c;
- i = segn.i;
- }
-
- if(i != null && i.length() != 0 && c != -1) {
- HashMap> ids = incoming.get(incomingTelNo);
- HashMap segments = null;
- if(ids == null) {
- ids = new HashMap>();
- }
- else {
- segments = ids.get(i);
- }
- id = i;
- if(segments == null) {
- segments = new HashMap();
- }
- segments.put(Integer.toString(c), msg);
- if(ids == null) {
- ids = new HashMap>();
- }
- ids.put(i, segments);
- incoming.put(incomingTelNo, ids);
-
- handler.post(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(context, "receiving:" + msg, Toast.LENGTH_SHORT).show();
- }
- });
-
- }
-
- }
-
- /*
- final String _incomingTelNo = incomingTelNo;
- handler.post(new Runnable() {
- @Override
- public void run() {
- Intent intent = new Intent("com.samourai.ponydirect.LOG");
- intent.putExtra("msg", "incoming from:" + _incomingTelNo);
- LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
- }
- });
- */
-
- if(incomingTelNo != null && id != null && id.length() != 0) {
- verifyIncoming(context, incomingTelNo, id);
- }
-
- }
- }
- }
-
- private void verifyIncoming(final Context context, String incomingTelNo, String id) {
-
- Handler handler = new Handler();
-
- HashMap> ids = incoming.get(incomingTelNo);
- HashMap segments = ids.get(id);
-
- int segs = -1;
- String hash = null;
- String net = null;
-
- Gson gson = new Gson();
- PayloadFactory.Seg0 seg0 = null;
- PayloadFactory.SegN segn = null;
-
- for(String key : segments.keySet()) {
-
- String msg = segments.get(key);
- if(msg.contains("\"s\":")) {
- seg0 = gson.fromJson(msg, PayloadFactory.Seg0.class);
- segs = seg0.s;
- hash = seg0.h;
- net = (seg0.n != null && seg0.n.length() > 0) ? seg0.n : "m";
- }
- else {
- segn = gson.fromJson(msg, PayloadFactory.SegN.class);
- }
-
- }
-
- if(segs != -1 && segs == segments.size()) {
-
- String[] s = new String[segs];
-
- int c = -1;
-
- for(String key : segments.keySet()) {
-
- final String msg = segments.get(key);
-
- if(msg.contains("\"s\":")) {
- seg0 = gson.fromJson(msg, PayloadFactory.Seg0.class);
- c = 0;
- }
- else {
- segn = gson.fromJson(msg, PayloadFactory.SegN.class);
- c = segn.c;
- }
-
- if(c != -1) {
- s[c] = msg;
- }
-
- }
-
- final List segmentList = Arrays.asList(s);
-
- handler.post(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(context, "received:" + segmentList.size(), Toast.LENGTH_SHORT).show();
- }
- });
-
- PayloadFactory.getInstance(context, transactionHandler).broadcastPayload(segmentList, (net != null && net.equals("t")) ? false : true, false);
-
- }
- else {
- Log.d("SMSReceiver", "verifyIncoming(): segment size not recognized");
- }
-
- }
-
-}
diff --git a/app/src/main/java/com/samourai/sms/SMSSender.java b/app/src/main/java/com/samourai/sms/SMSSender.java
deleted file mode 100644
index 81cf6d7..0000000
--- a/app/src/main/java/com/samourai/sms/SMSSender.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.samourai.sms;
-
-import android.app.Activity;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.telephony.SmsManager;
-import android.widget.Toast;
-//import android.widget.Toast;
-//import android.util.Log;
-
-public class SMSSender {
-
- private static Context context = null;
- private static PendingIntent sentPI = null;
- private static PendingIntent deliveredPI = null;
-
- private static SMSSender instance = null;
-
- private SMSSender() { ; }
-
- public static SMSSender getInstance(Context ctx) {
- context = ctx;
-
- if(instance == null) {
- instance = new SMSSender();
- setReceivers();
- }
-
- return instance;
- }
-
- public void send(String text, String dest) {
- SmsManager sm = SmsManager.getDefault();
- sm.sendTextMessage(dest, null, text, null, null);
- }
-
- public static void setReceivers() {
- String SENT = "SMS_SENT";
- String DELIVERED = "SMS_DELIVERED";
-
- sentPI = PendingIntent.getBroadcast(context, 0, new Intent(SENT), 0);
- deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED), 0);
-
- //---when the SMS has been sent---
- context.registerReceiver(new BroadcastReceiver(){
- @Override
- public void onReceive(Context arg0, Intent arg1) {
- switch (getResultCode())
- {
- case Activity.RESULT_OK:
- Toast.makeText(((Activity)context).getBaseContext(), "SMS sent", Toast.LENGTH_SHORT).show();
- break;
- case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
-// Toast.makeText(((Activity)context).getBaseContext(), "SMS not sent: Generic failure", Toast.LENGTH_SHORT).show();
- break;
- case SmsManager.RESULT_ERROR_NO_SERVICE:
-// Toast.makeText(((Activity)context).getBaseContext(), "SMS not sent: No service", Toast.LENGTH_SHORT).show();
- break;
- case SmsManager.RESULT_ERROR_NULL_PDU:
-// Toast.makeText(((Activity)context).getBaseContext(), "SMS not sent: Null PDU", Toast.LENGTH_SHORT).show();
- break;
- case SmsManager.RESULT_ERROR_RADIO_OFF:
-// Toast.makeText(((Activity)context).getBaseContext(), "SMS not sent: Radio off", Toast.LENGTH_SHORT).show();
- break;
- }
- }
- }, new IntentFilter(SENT));
-
- //---when the SMS has been delivered---
- context.registerReceiver(new BroadcastReceiver(){
- @Override
- public void onReceive(Context arg0, Intent arg1) {
- switch (getResultCode())
- {
- case Activity.RESULT_OK:
- Toast.makeText(((Activity)context).getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show();
- break;
- case Activity.RESULT_CANCELED:
-// Toast.makeText(((Activity)context).getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show();
- break;
- }
- }
- }, new IntentFilter(DELIVERED));
- }
-}
diff --git a/app/src/main/java/com/samourai/txtenna/MainActivity.java b/app/src/main/java/com/samourai/txtenna/MainActivity.java
index 3ff746a..a1d5723 100644
--- a/app/src/main/java/com/samourai/txtenna/MainActivity.java
+++ b/app/src/main/java/com/samourai/txtenna/MainActivity.java
@@ -37,7 +37,6 @@
import com.dm.zbar.android.scanner.ZBarScannerActivity;
import com.gotenna.sdk.GoTenna;
import com.gotenna.sdk.exceptions.GTInvalidAppTokenException;
-import com.samourai.sms.SMSReceiver;
import com.samourai.txtenna.adapters.BroadcastLogsAdapter;
import com.samourai.txtenna.payload.PayloadFactory;
import com.samourai.txtenna.prefs.PrefsUtil;
@@ -68,7 +67,6 @@ public class MainActivity extends AppCompatActivity implements IncomingMessagesM
private final static int SCAN_HEX_TX = 2011;
- private static final int SMS_PERMISSION_CODE = 0;
private static final int CAMERA_PERMISSION_CODE = 1;
private Group emptyView;
private LinearLayout BottomSheetMenu;
@@ -129,17 +127,6 @@ public void onClick(View view) {
}
});
- smsSelection = BottomSheetMenu.findViewById(R.id.sms);
- smsSelection.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- relayViaGoTenna = false;
- bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
- doGetHex();
- }
- });
-
-
if (!hasCameraPermission()) {
showRequestCameraPermissionInfoAlertDialog();
}
@@ -148,10 +135,6 @@ public void onClick(View view) {
showRequestCameraPermissionInfoAlertDialog();
}
- if (!hasReadSmsPermission() || !hasSendSmsPermission()) {
- showRequestSMSPermissionInfoAlertDialog();
- }
-
try {
PayloadFactory.getInstance(MainActivity.this, transactionHandler).readBroadcastLog();
} catch (JSONException | IOException e) {
@@ -217,32 +200,14 @@ protected void onPostCreate(@Nullable Bundle savedInstanceState) {
protected void onResume() {
super.onResume();
- if(isReceiver == null) {
- isFilter = new IntentFilter();
- isFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
- isFilter.setPriority(2147483647);
- isReceiver = new SMSReceiver(transactionHandler);
- MainActivity.this.registerReceiver(isReceiver, isFilter);
- }
- refreshData();
- transactionHandler.startTransactionChecker();
- IncomingMessagesManager.getInstance(MainActivity.this.getApplicationContext()).addIncomingMessageListener(this);
- }
+ refreshData();
+ transactionHandler.startTransactionChecker();
+ IncomingMessagesManager.getInstance(MainActivity.this.getApplicationContext()).addIncomingMessageListener(this);
+ }
@Override
protected void onPause() {
super.onPause();
-
- try {
- if(isReceiver != null) {
- MainActivity.this.unregisterReceiver(isReceiver);
- IncomingMessagesManager.getInstance(MainActivity.this.getApplicationContext()).removeIncomingMessageListener(this);
- transactionHandler.stopTransactionChecker();
- }
- }
- catch(IllegalArgumentException iae) {
- ;
- }
}
@Override
@@ -450,54 +415,11 @@ public void onClick(DialogInterface dialog, int which) {
}
- private void showRequestSMSPermissionInfoAlertDialog() {
-
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle(R.string.permission_sms_alert_dialog_title);
- builder.setMessage(R.string.permission_sms_dialog_message);
- builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- requestSmsPermission();
- }
- });
- builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
-
- builder.show();
-
- }
-
- private boolean hasCameraPermission() {
- return ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED;
- }
-
- private boolean hasReadSmsPermission() {
- return ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_SMS) == PackageManager.PERMISSION_GRANTED;
- }
-
- private boolean hasSendSmsPermission() {
- return ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED;
- }
-
- private void requestSmsPermission() {
-
- if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.SEND_SMS) &&
- ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_SMS)) {
- Log.d("MainActivity", "shouldShowRequestPermissionRationale(), no permission requested");
- return;
- }
-
- ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SEND_SMS, Manifest.permission.READ_SMS}, SMS_PERMISSION_CODE);
-
- }
+ private boolean hasCameraPermission() {
+ return ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED;
+ }
- private void requestCameraPermission() {
+ private void requestCameraPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.CAMERA)
) {
@@ -523,7 +445,6 @@ private void doSendHex(final String hexTx, final NetworkParameters params) {
String msg = null;
try {
tx = new Transaction(PrefsUtil.getInstance(MainActivity.this).getValue(PrefsUtil.USE_MAINNET, true) == true ? MainNetParams.get() : TestNet3Params.get(), Hex.decode(hexTx));
- msg = MainActivity.this.getString(R.string.broadcast) + ":" + tx.getHashAsString() + " " + getText(R.string.to) + " " + PrefsUtil.getInstance(MainActivity.this).getValue(PrefsUtil.SMS_RELAY, MainActivity.this.getText(R.string.default_relay).toString()) + " ?";
Log.d("MainActivity", "hash:" + tx.getHashAsString());
tx.verify();
}
@@ -577,27 +498,17 @@ public void onClick(DialogInterface dialog, int whichButton) {
}
- });
- dlg.setNeutralButton(R.string.cancel, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
+ });
+ dlg.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
relayViaGoTenna = null;
- }
-
- });
- dlg.setNegativeButton(R.string.sms_broadcast, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
-
- dialog.dismiss();
+ }
- List payload = PayloadFactory.toJSON(hexTx, false, params);
- PayloadFactory.getInstance(MainActivity.this, transactionHandler).relayPayload(payload, false);
- relayViaGoTenna = null;
- }
- });
- }
+ });
+ }
dlg.show();
}
diff --git a/app/src/main/java/com/samourai/txtenna/payload/PayloadFactory.java b/app/src/main/java/com/samourai/txtenna/payload/PayloadFactory.java
index ca98155..f47b130 100644
--- a/app/src/main/java/com/samourai/txtenna/payload/PayloadFactory.java
+++ b/app/src/main/java/com/samourai/txtenna/payload/PayloadFactory.java
@@ -10,7 +10,6 @@
import com.google.gson.GsonBuilder;
import com.gotenna.sdk.gids.GIDManager;
-import com.samourai.sms.SMSSender;
import com.samourai.txtenna.utils.Message;
import com.samourai.txtenna.R;
import com.samourai.txtenna.utils.SendMessageInteractor;
@@ -365,14 +364,6 @@ public void onMessageResponseReceived()
Log.d("PayloadFactory", "goTenna relayed: " + s + " gid: " + gid);
}
- else {
- SMSSender.getInstance(context).send(s, PrefsUtil.getInstance(context).getValue(PrefsUtil.SMS_RELAY, context.getString(R.string.default_relay)));
- Log.d("PayloadFactory", "sms relayed:" + s);
-
- // add messages that were relayed over the SMS network to the broadcast log
- BroadcastLogUtil.getInstance().add(payload.get(0), true, true, false, 0);
- transactionHandler.refresh();
- }
handler.post(new Runnable() {
@Override