短信自动转发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的原理和步骤。一、 原理1. 选择开发工具:由于自
2023-06-05
自己做泥app
如果你想自己制作一个泥(mud)app,首先需要了解泥(mud)是什么以及它的一些基本原理。泥(mud)是一种基于文本的多人在线角色扮演游戏(MMORPG),它在80年代中期开始流行,并在90年代中期达到了巅峰。虽然它的流行度已经不如从前,但是仍有很多人在
2023-06-05
自己做个卖货的app怎么去推广
要推广一个自己做的卖货的app,首先需要明确几个要素:1. 目标用户群体是谁?2. 这个app解决了哪些用户的需求?3. 和竞品相比有什么优势?一旦明确了以上问题,就可以开始具体的推广工作了。1. 社交媒体平台:利用社交媒体平台如微信、微博等,通过发布公司
2023-06-05
制作自己的手写书法app
手写书法是中国传统文化的瑰宝之一,它能够传递出中国文化的根脉和气韵。随着科技的不断发展,人们可以利用智能手机等设备来学习和练习书法。自己制作一个手写书法app可能看起来很困难,但是其实步骤并不复杂。下面将详细介绍一下制作自己的手写书法app的原理和步骤。#
2023-06-05
怎样自学开发app
学习开发App对于初学者来说可能是一件比较复杂和烦琐的事情,毕竟作为一个软件开发者,涉及到的技术点还是相对较多。但是如果你对编程有一定的兴趣和基础,学习开发App也是一件非常有乐趣和挑战的事情。下面我会详细介绍怎样自学开发App,希望能够帮助到初学者。1.
2023-06-05
怎么制作自己的餐厅菜单app
制作自己的餐厅菜单app需要考虑很多因素,如设计、技术、功能、用户体验等等。本文将为大家介绍如何制作一个完整的餐厅菜单app,以及如何考虑以上因素。1. 设计设计是一个好的餐厅菜单app必不可少的因素之一。一个好的设计需要考虑用户的习惯和喜好,让用户在使用
2023-06-05
手机app自做过程
手机应用程序(APP)是现代移动设备的核心,它们为我们提供了无数的功能和乐趣。自制自己的APP也成为了一个流行的趋势,它允许个人或公司充分利用移动设备的功能,提供个性化或特定的应用程序。接下来,我将介绍制作手机APP的主要步骤和原理。1.确定目标和功能首先
2023-05-31
每日分享新闻自己制作的app
随着移动互联网的普及及技术的进步,个人制作应用程序的门槛越来越低,许多网站博主都可以自己制作App。因此,我今天想介绍一下我自己制作的一个新闻分享App,以说明制作App的原理和过程。首先,这个App的主要功能就是新闻分享。在App中,用户可以阅读最新的新
2023-05-30
贸易公司可以自己开发app嘛
贸易公司作为新型的商业实体,在不断发展壮大的同时,也随着移动互联网和信息化、智能化的进一步发展,对于自己开发APP的需求也越来越强烈。其实贸易公司开发APP的原理,就是按照一系列的流程,组合开发各项功能模块,如数据交互、用户界面、网络连接、后台管理等模块。
2023-05-30
可以自己在哪个app做养老认证
随着人口老龄化的趋势不断加强,养老认证已成为老年人和其家人十分关注的问题。养老认证是指通过一系列的流程,确定老年人的身份和需求,以便为其提供更加个性化、专业化的养老服务。那么,在移动互联网时代,哪些APP可以做养老认证呢?1.「中国养老金融APP」中国养老
2023-05-30
混合开发app自动化测试
混合开发是一种结合了原生应用程序和Web应用程序(或HTML5应用程序)的开发方式,它能够快速地让Web应用程序在移动设备上运行,同时也可以使用原生应用程序的功能。混合开发广泛应用于移动应用程序开发中,但是如何检测和修复自动化测试的Bug是一件很棘手的问题
2023-05-30
app自己怎么开发软件
开发一个app并不是件容易的事情,需要了解很多知识和技能,比如编程语言、UI设计、数据库管理等等。下面是一些关于如何开发一个app的的详细介绍:一、确定需求和功能在设计app前,第一步是了解你想要开发的应用的需求和功能。首先,你需要明确这个app的目的是什
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1