短信自动转发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的原理和步骤。App开发原理App是指运行于移动设备上的应用程序。App开发需要很多
2023-06-05
自建评分app
前言随着移动互联网的发展,评分APP越来越受人们欢迎,特别是在餐饮、酒店、景点等行业。自建评分APP不仅可以满足个人的需求,还可以为商家提供良好的用户评价渠道。本文将分享自建评分APP的原理和详细介绍。一、原理评分APP主要分为两部分,即前端和后端。前端是
2023-06-05
自己做外卖如何配送有什么app
自己开设的外卖店如何配送,是许多新创业者面临的问题。其实,现在已经有很多外卖配送管理的平台和app提供相应的解决方案,下面将详细介绍其中一些平台和app,以及其工作原理。一、平台介绍1.餐饮云配送餐饮云配送是一款专为餐厅提供配送管理的云平台。它能够配合商家
2023-06-05
自学编程做app难吗知乎
自学编程做app是现在很多人想要尝试的事情,因为移动互联网行业的快速发展和电子产品的普及,app开发成为了一个非常热门的领域。虽然有些人可能认为自学编程很难,但是实际上只要掌握了正确的方法和技能,就可以轻松的入门并慢慢成长。接下来,我会从原理和详细介绍两个
2023-06-05
自己开发的app怎么安装
安装自己开发的App一般可以通过两种方式:通过App Store发布,或通过Xcode导出安装包安装。以下是具体步骤:一、通过App Store发布1.开发者账号注册要在App Store上发布自己的App,需要先注册一个苹果开发者账号,并购买99美元的开
2023-06-05
自己开发app年赚10亿不是梦
想象一下,您开发了一款App,用户下载、观看和购买您的产品,您会从中获得收入。当用户数量增加时,您的收入也会不断增加,甚至可以年赚10亿。这是一个非常具有吸引力的梦想。在这篇文章中,我将向您介绍如何开发一款成功的App,并获得丰厚的收入。1. 创新第一步是
2023-06-05
制作自己动漫形象的app
目前,制作自己动漫形象已经不再需要专业的绘画技能,因为现在有很多的app可以帮助我们完成这个任务。这些app提供了各种各样的工具,让我们可以自由选择和创造自己的动漫形象。接下来,我将详细介绍一下如何使用这些app制作自己的动漫形象。首先,我们需要找到一款能
2023-06-05
怎么拥有自己做的app所有权
拥有自己制作的app的所有权是每个开发者都应该了解的基本原理,在此向大家简要介绍一下。首先,需要声明的是,在创建app时,一般情况下应该遵守开源和版权等相关法律法规,确保不侵犯他人权利。对于自己开发的app,拥有所有权的原理是基于版权保护的基础上,我们可以
2023-06-05
手机app可以自己制作吗
手机APP是现代人离不开的东西,但不知道有多少人知道,其实我们也可以自己制作APP。制作一个APP需要的工具和知识比较多,但是只要掌握了相关的知识和技能,正常操作是没有难点的。手机APP制作需要用到下面几个方面:1.编程语言2.开发平台3.设计软件4.测试
2023-05-31
如何学习自己制作商城app
制作商城App需要掌握一定的技术和知识,包括前端技术、后端技术、数据库技术以及安卓或iOS App开发技术等。以下是详细介绍:1. 前端技术:前端技术主要涵盖HTML、CSS、JavaScript等基础语言,以及jQuery、Vue、React等前端框架的
2023-05-30
免费做一个自己app
在现在的数字时代,移动应用程序已经成为人们日常生活的一部分。无论是用于社交娱乐、教育学习、生活购物、工作办公、医疗保健、金融理财等领域,都有各种类型的应用程序。每个人都可以创建自己的移动应用程序,而且不需要成为一名软件工程师。本文将简要介绍免费创建自己应用
2023-05-30
给自己的app做一个分享落地页
分享落地页是一种用于推广app的页面,通常包括应用下载链接、功能简介、用户评价等内容,可以吸引用户前来下载使用。在设计分享落地页之前,需要进行市场分析和目标用户分析,了解用户的需求和偏好,才能制定出具有吸引力的宣传策略。一、选定主题分享落地页的主题需要与a
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1