短信自动转发app自己制作

在移动互联网的时代中,短信服务重要性不言而喻。很多时候,我们在使用手机时,由于种种原因将无法及时查看到一条重要的短信。为了能够及时从短信的信息中获益,我们可以使用短信自动转发app。下面,将介绍关于短信自动转发的原理以及详细制作过程。

1. 短信自动转发app原理

短信自动转发app的原理非常简单。它的工作基于手机上的短信监听服务,它会侦听每一条接收到的短信,并将其推送到你所设定的接收目标。

转发的工作流程如下:

1.1 程序监听所有接收到的短信,并通过消息广播机制将短信传递到指定的转发服务。

1.2 转发服务接收到短信后,解析出短信信息及接收号码。

1.3 根据用户设置的号码,发送短信到指定的接收方。同时,转发服务也会将短信存储到本地数据库中供用户查询。

2. 短信自动转发app制作过程

制作一款短信自动转发app,前提是你具备一定的编程知识。下面是具体的步骤:

2.1 程序运行权限申请

在应用开发中,获取权限的方法是固定的,但是在运行时,用户可以选择授予或拒绝该权限。需要先在 AndroidManifest.xml 文件中声明权限(如读取短信、发送短信、读取联系人、读取电话状态),然后在 app 运行时申请权限。权限请求代码如下:

```

if (ContextCompat.checkSelfPermission(MainActivity.this,

Manifest.permission.READ_SMS)

!= PackageManager.PERMISSION_GRANTED) {

if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,

Manifest.permission.READ_SMS)) {

} else {

ActivityCompat.requestPermissions(MainActivity.this,

new String[]{Manifest.permission.READ_SMS},

REQUEST_CODE_READ_SMS);

}

}

```

2.2 短信接收消息广播

Android 中使用 BroadcastReceiver 操作广播的注册和发布。你对于接收和处理短消息的需求可以通过广播机制来实现:

```

public class SmsReceiver extends BroadcastReceiver {

private static final String TAG = SmsReceiver.class.getSimpleName();

@Override

public void onReceive(Context context, Intent intent) {

if (SmsMessageReceiver.ACTION_SMS_RECEIVED.equals(intent.getAction())) {

Object [] pdus = (Object[]) intent.getExtras().get("pdus");

assert pdus != null;

SmsMessage[] smsMessages = new SmsMessage[pdus.length];

for (int i = 0; i < pdus.length; i++) {

smsMessages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);

}

String number = getSmsNumber(smsMessages);

String message = getSmsMessage(smsMessages);

sendSms(context, number, message);

}

}

private String getSmsNumber(SmsMessage[] smsMessages) {

StringBuilder builder = new StringBuilder();

for (SmsMessage smsMessage : smsMessages) {

builder.append(smsMessage.getOriginatingAddress());

}

return builder.toString();

}

private String getSmsMessage(SmsMessage[] smsMessages) {

StringBuilder builder = new StringBuilder();

for (SmsMessage smsMessage : smsMessages) {

builder.append(smsMessage.getMessageBody());

}

return builder.toString();

}

private void sendSms(Context context, String number, String message) {

Intent intent = new Intent(context, SmsService.class);

intent.putExtra(Sender.KEY_RECEIVER_NUMBER, number);

intent.putExtra(Sender.KEY_MESSAGE, message);

context.startService(intent);

}

}

```

在 Manifest.xml 中添加广播注册:

```

```

2.3 短信发送服务

在应用中,需要提供一个服务以便在短信接收完毕后发送消息。以下是一个简单的短信发送服务:

```

public class SmsService extends Service {

private static final String TAG = SmsService.class.getSimpleName();

private Sender mSender;

@Override

public void onCreate() {

super.onCreate();

mSender = new Sender();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

if (intent != null) {

mSender.send(this, intent);

}

return super.onStartCommand(intent, flags, startId);

}

@Override

public IBinder onBind(Intent intent) {

throw new UnsupportedOperationException("Not supported yet.");

}

}

```

2.4 短信发送器

该类主要封装了发送短信的过程。getClass() + getMethod() 的方法获取了短信管理器的实例,然后通过 SmsManager 的 sendTextMessage() 方法发送短信:

```

public class Sender {

public static final String KEY_RECEIVER_NUMBER = "receiver_number";

public static final String KEY_MESSAGE = "message";

public boolean send(Context context, Intent intent) {

String number = intent.getStringExtra(KEY_RECEIVER_NUMBER);

String message = intent.getStringExtra(KEY_MESSAGE);

if (!TextUtils.isEmpty(number) && !TextUtils.isEmpty(message)) {

try {

SmsManager smsManager = SmsManager.getDefault();

ArrayList dividedMessages = smsManager.divideMessage(message);

int messageCount = dividedMessages.size();

ArrayList sentPendingIntents = new ArrayList<>(messageCount);

ArrayList deliveredPendingIntents = new ArrayList<>(messageCount);

for (int i = 0; i < messageCount; i++) {

Intent sentIntent = new Intent(SmsReceiver.ACTION_SMS_SENT);

sentIntent.putExtra(Sender.KEY_MESSAGE, message);

sentIntent.putExtra(Sender.KEY_NUMBER, number);

PendingIntent sentPendingIntent = PendingIntent.getBroadcast(context, 0, sentIntent, 0);

Intent deliveredIntent = new Intent(SmsReceiver.ACTION_SMS_DELIVERED);

deliveredIntent.putExtra(Sender.KEY_MESSAGE, message);

deliveredIntent.putExtra(Sender.KEY_NUMBER, number);

PendingIntent deliveredPendingIntent = PendingIntent.getBroadcast(context, 0, deliveredIntent, 0);

sentPendingIntents.add(sentPendingIntent);

deliveredPendingIntents.add(deliveredPendingIntent);

}

smsManager.sendMultipartTextMessage(number, null, dividedMessages, sentPendingIntents, deliveredPendingIntents);

return true;

} catch (Exception e) {

Log.e(TAG, "send failed", e);

}

}

return false;

}

}

```

3. 总结

以上是短信自动转发app的制作过程。它可供用户在需要的时候自动转发手机收到的短信。这款应用程序不仅易于制作,而且非常实用。我们可以根据自己的需要进行调整和修改,将其运用到其他领域中。


相关知识:
自己做菜的app
自己做菜的APP可以提供菜谱、食材推荐和健康食谱等实用功能,让用户更好地掌握健康饮食的知识,更好地管理自己的饮食健康。自己做菜的APP的基本原理是利用互联网技术和移动终端设备的特性,将菜谱、健康饮食的各种知识和信息整理成数据库,在用户需要的时候进行查询和推
2023-06-05
自己做个扫描二维码app小程序教程
扫描二维码是现代人生活中常见的一项技能,每个人都可能会用二维码扫描器来扫描二维码以获取想要的信息,比如商品价格、优惠券、活动资讯等等。在这个背景下,开发一个扫描二维码app小程序的需求越来越多。下面,我们就来介绍一下自己如何设计并实现一个扫描二维码app小
2023-06-05
自己做mv的app
做一个MV的app有点类似于做一个影视类app,但是还要涉及到视频剪辑和音频混合等复杂的操作。这里我们将MV分为两部分:视觉和声音,然后分别介绍如何实现。1. 视觉部分视觉部分主要是指视频的剪辑和特效等操作。我们可以使用第三方的视频编辑库或者自己编写视频编
2023-06-05
自己开发的app如何发布
发布一个自己开发的App,需要经过几个步骤,包括准备 App Store 需要的材料,将应用提交给苹果审核,通过审核后发布应用等过程。下面将详细介绍这些步骤。步骤1:准备 App Store 需要的材料在发布 App 之前,你需要准备以下材料:- 应用名称
2023-06-05
自己开发app过程中的困难和问题
在开发应用程序的过程中,难免会遇到一些困难和问题。以下是一些可能会遇到的情况,以及如何解决它们:1. 编辑器问题当你开始编写应用程序时,你可能会遇到编辑器问题。例如,你的代码库可能与编辑器不兼容,或者你可能无法在应用程序中找到所需的编辑器插件。要解决这个问
2023-06-05
怎么给自己做一个购物app
制作一个购物app,需要掌握以下几个方面的知识:1.统筹规划:在制作app之前,应该先梳理好整个app的功能模块,确定好想要开发的功能时相对完整的架构,有了这个,后续的开发会更加方便和顺利。2.前端开发:前端开发是负责app界面设计的部分,需要掌握基础的H
2023-06-05
如何给自己做一个app
要让自己做出一个真正的App,需要经历以下三个步骤:第一步:需求分析在你的脑海中想出一个App的构思并确定其功能、特点和使用对象。App需要解决什么问题,它的用户是谁?App的目的是为了什么?这些问题都需要认真思考和解答。在需求分析的过程中,也需要了解一些
2023-05-30
商家自建外卖app
随着移动互联网的发展,外卖已经成为了人们生活中不可或缺的一部分。为了更好地满足用户的需求,越来越多的商家开始自建外卖App,以提供更优质的服务。下面,我们来详细介绍商家自建外卖App的原理。一、开发技术商家自建外卖App需要掌握移动应用开发技术,其中包括客
2023-05-30
哪个app可以自己做汽车模型的
如果你想自己设计和建造汽车模型,现在有很多app可以帮你完成这个任务。下面介绍几个常用的汽车模型设计app及其原理。1. SolidWorksSolidWorks是一款强大的3D建模软件,可以用来制作各种汽车模型。它基于计算机辅助设计(CAD)和计算机辅助
2023-05-30
农村自建别墅app
农村自建别墅APP是一种专为农村自建别墅业主和建筑师提供服务的手机应用程序。其主要功能是帮助业主进行自建别墅的设计、建筑、装修及管理等各个环节的规划和实施。以下将详细介绍其原理和功能特点。一、农村自建别墅APP的原理农村自建别墅APP的原理是通过提供一种智
2023-05-30
可以自建词库的app
随着移动互联网的普及和技术的发展,越来越多的手机应用程序(app)应运而生,涉及各个方面的应用程序也越来越多。对于许多人来说,在语言学习过程中,词汇量的扩展是非常重要的一步。而自建词库的app则为用户提供了一个个性化、个性化的词汇学习空间。自建词库的app
2023-05-30
可以用自拍做软件封面的app
随着智能手机的普及和相机技术的不断提升,自拍已经成为了一种时尚和风潮。越来越多的年轻人喜欢利用自拍来表达自己的个性和风格。同时,在移动互联网越来越发达的今天,软件开发者开始越来越注重软件封面的设计。自拍软件封面的设计已成为了当前软件开发的热点之一。自拍软件
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1