短信自动转发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的实现原理主要涉及以下三
2023-06-05
自己做装修的app
随着科技的不断发展,越来越多的传统行业被数字化转型,而装修行业也不例外。现在,越来越多的人开始使用装修App来规划和设计自己的家居装修,因为它们方便快捷,无需雇佣专业设计师,而且有许多免费的选项和功能。在本文中,我们将介绍一些制作自己的装修App所需的原理
2023-06-05
自己做听书app
听书App是一种基于语音播放技术的手机应用,它允许用户在手机上随时随地听取有声读物。自己做一个听书App需要具备技术和开发能力,同时需要具备专业的演讲人才和音频制作技术。下面将详细介绍自己做听书App的原理和步骤。一、原理听书App的基本原理就是将文本内容
2023-06-05
自媒体app开发需求及功能分析
随着移动互联网时代的到来,自媒体这个新兴领域也逐渐崭露头角。自媒体平台的兴起,使越来越多的人都有了发布自己的文章、图片、视频等内容的机会,自媒体造福了人民群众的文化生活,同时也吸引了很多企业和创业者的关注。为了满足这一需求,自媒体APP应运而生,成为了自媒
2023-06-05
自己制作简单日程app
日程管理是现代人生活中不可或缺的一部分。我们需要有一个科学合理的时间管理方法,才能让我们的生活更加规律和有效率。因此,我们可以制作一个简单的日程管理应用程序,来帮助我们更好地管理时间和日程。基本思路:我们的日程管理应用程序需要包含以下功能:1. 目标设定:
2023-06-05
自己制作外卖app软件
制作一款外卖app软件需要掌握以下的基本原理或流程:1. 需求分析:在制作任何一个软件之前,都需要针对用户的需求进行分析,确定软件的基本功能和特点,以便更好地满足用户的需求。2. UI设计:UI是用户界面的简称,在软件设计中,UI设计是至关重要的一步,它决
2023-06-05
怎样自行制作手机app
现在手机应用已然成为了人们生活中不可或缺的一部分,无论是购物、社交、游戏还是工具类应用,几乎每个人都需要使用。所以自行制作一款手机应用也成为了许多人的心愿。本文将为大家介绍制作手机应用的原理和步骤。一、选择开发平台要制作一款手机应用,首先需要选择开发平台。
2023-06-05
怎样自己做个app
制作一个手机应用程序可以让您将您的创意带入新的高度,并与其他人分享。它可以是一个游戏,一个实用程序,一个工具,或者是与您的品牌或业务相关的应用。无论您的目的是什么,创建一个手机应用程序可能需要下面提供的步骤和技巧。第一步:选择您的平台在您开始创建应用程序之
2023-06-05
手机app自助开发
随着智能手机应用市场的兴起,越来越多的人开始关注自主开发手机应用的可能性。无论是为了商业目的,还是出于兴趣爱好,都可以通过自助开发的方式,创建自己的手机应用程序。 在本文中,我们将探讨手机app自助开发的原理和详细介绍。一、开发工具为了开发手机应用程序,您
2023-05-31
什么app可以自己制作题库
在移动互联网应用的世界中,我们常常需要制作一些题库来支持我们的学习或者考试。普通用户想要制作题库可能会觉得比较困难,因为他们没有相应的技术和开发经验。但是,现在很多app已经允许用户自己制作题库来学习或者考试了。本文将介绍一些常用的app来自己制作题库。1
2023-05-31
企业app是自建还是找外包公司
企业app是指专门为企业内部使用而开发的应用程序。现在企业app已经成为大部分企业必备的工具之一,具有提高工作效率、提升企业形象、方便员工沟通等多种优势。但是,很多企业在决定开发企业app时却面临一个难题,即是自建还是找外包公司开发。那么,到底自建和找外包
2023-05-30
开发一个自用app
开发一个自用app,无论是对于个人还是企业,都有着极大的实用价值。在这篇文章中,我将从原理的角度,详细介绍自用app的开发过程。首先,我们需要定义自用app的概念。自用app即为仅限个人或企业内部使用的应用程序,它可以实现特定功能,也可以简化常规的业务流程
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1