短信自动转发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呢?下面就为大家介绍一下APP的制作原理和详细步骤。一、基础知识在开始制作APP之前,需要掌握以下基础知识:1.
2023-06-05
做自媒体比较好用的手机app
现在越来越多的人开始使用手机app做自媒体,因为手机app的优势在于操作简单、随时随地都能更新内容,用户流量也更为方便获取,从而让自媒体内容更具有传播性。下面,我为大家介绍几款比较好用的手机app。1. 微信公众号微信公众号是现在最流行的自媒体平台之一,它
2023-06-05
自己做个app怎么弄
制作一款App应用程序可以是一个相当困难和繁琐的过程,但是,如果您采用了正确的工具和方法,就可以使整个过程变得相对容易和简单。下面是一些可以作为制作App的合理指南:1. 定义您的App的目的和功能:在开始制作您的App之前,您需要定义您的App的目的和功
2023-06-05
自学汉服制作的app
随着汉服文化的逐渐兴盛,越来越多的人开始学习汉服的制作过程。然而,由于传统的汉服制作技艺较为繁琐,需要多年的学习和实践经验才能够掌握。为了方便大众学习汉服的制作方法,一些开发者开始研发自学汉服制作的app。自学汉服制作的app主要利用了现代科技的力量,通过
2023-06-05
自己开发的app是存货还是无形资产呢
自己开发的app可能既是存货又是无形资产。对于存货而言,它是公司正在经营中用于出售的物品。而对于一个开发者而言,如果他们准备将他们的app出售或者以其他方式准备盈利,则可以将其视为一个存货。此时,该app的开发成本可以被计入生产成本中,并计入公司的资产负债
2023-06-05
自己制作选择题哪个app 好
在当今信息时代,知识的获取变得非常容易,因为我们可以通过各种方式获取大量的信息。 无论是在学校、大学、公司还是其他地方,我们经常需要进行选择题测试。 那么,如果有一个能够方便制作选择题的应用程序,将会是非常方便的。 需要注意的是:目前市面上已有许多选择题制
2023-06-05
自己制作mv软件app
制作MV软件需要的技术包括音频处理、视频剪辑、特效添加等,还需要了解一些编程知识和UI设计技巧。下面就来介绍一下自己制作MV软件的原理和步骤。一、需求分析首先,需要分析市场上已有的MV软件,包括它们的特点、优势和不足之处。从用户的角度来看,他们在使用MV软
2023-06-05
淘客app开发自学教程
淘客app开发是一项富有挑战性的技术,需要综合运用前端界面设计、后端开发、数据分析等多种技能。如果你计划开始淘客app的开发,本篇文章将为你提供一些重要的原理和详细介绍。1. 接口调用淘客app需要调用淘宝开放平台的接口来获取商品信息。使用接口可以避免从页
2023-05-31
批发市场自己开发app
批发市场是一个非常大的市场,许多批发商需要一个更高效的销售平台,为此,许多批发商开始通过开发自己的App来满足他们的销售需求。在这篇文章中,我将介绍如何开发一个批发市场的App。首先,开发一个批发市场的App需要有一组开发者。你需要在你的团队中找到有以下专
2023-05-30
全球自选app开发
在移动互联网时代,越来越多的人开始使用手机智能化的生活方式。各种app应用也越来越多,越来越精细。针对不同用户需求,很多人开始研究并开发自己的app。本文将为您介绍全球自选app的开发原理以及详细介绍。一、全球自选app开发的原理全球自选app是一种特殊的
2023-05-30
上党自己做app
随着移动互联网的飞速发展,越来越多的人开始尝试通过自己开发应用程序来实现个人或商业目的。而对于一些个人或企业来说,自己开发一款app也是一个不错的选择。本文将介绍上党自己做app的原理和详细方法。一、原理开发一款app的过程包括多个环节,而其中最核心的环节
2023-05-30
个人自行制作app
随着移动互联网的快速发展,越来越多的人开始关注和使用app。而对于一些有一定编程基础或对技术感兴趣的人来说,自行制作一个app也成为了一种可能。下面将介绍个人自行制作app的原理及详细步骤。一、确认开发平台在制作app之前,需要确定使用哪种开发平台,主要有
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1