短信自动转发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的工作原理或详细介绍。一、基本介绍自
2023-06-05
自己做衣服app
现代人越来越追求个性化和时尚,自己做衣服也成为了许多人的爱好。而随着智能手机的普及,在手机上自己做衣服的需求也越来越多。今天,我将介绍如何打造一个自己做衣服的app。首先,我们需要明确这个app的主要功能,包括设计衣服、选择面料、计算量体尺寸和下单购买。为
2023-06-05
自学开发app不用编程
在当今互联网时代,移动应用程序 (App) 已经成为人们日常生活不可或缺的一部分。许多人都想尝试开发自己的App,但是对于大多数人来说,学习编程语言是一个很大的障碍。那么在不用编程的情况下,如何学习并开发自己的App呢?一种不需要编程知识的方法是使用一些应
2023-06-05
自己怎么开发一个app
开发app是现代软件工程的一项重要内容,对于想要在移动互联网领域有所创新的开发者和企业而言,学会如何开发一款app非常重要。本篇文章将介绍如何开发一个app,涉及到的主要步骤包括需求分析、UI设计、编程与测试,通过这些步骤将您的创意变成一个实用的软件产品。
2023-06-05
自己制作的app怎么上架到浏览器
如果你想将自己制作的app上架到浏览器中,可以通过下面的步骤来实现:步骤一:创建一个新的Web应用首先,你需要创建一个新的Web应用。使用HTML,CSS和JavaScript编写并构建你的应用,确保在构建时会遵循特定的浏览器要求。步骤二:使用HTTPS协
2023-06-05
自己制作彩票app
彩票这种游戏一直以来都备受人们的热爱,而随着移动互联网的普及,便有越来越多的人开始希望能够通过手机APP来购买彩票,实现随时随地地参与这种有趣的游戏,因此,自己制作一个彩票APP也成为了之前不少人的需求。那么,自己制作彩票APP的原理或详细介绍,可以分为以
2023-06-05
物联网平台自己开发app
物联网平台自己开发app,可以让用户更方便地使用并管理物联网设备。本文将从原理和详细介绍两个方面来阐述这个问题。一、原理物联网平台开发app的原理,主要是基于云计算、大数据、人工智能等现代技术所构成的物联网平台体系。具体来说,物联网平台通常由三个主要部分组
2023-05-31
苹果安装自己开发的app
在苹果设备上安装自己开发的应用程序,大致分为两种方法:一、通过App Store发布应用程序,用户通过App Store搜索、下载、安装使用;二、通过Xcode将已编译好的应用程序直接安装到设备上。这里主要介绍第二种方法的实现原理和具体操作步骤。一、实现原
2023-05-30
如何自己制作一个手机app
在现代社会中,手机已经成为人们最为常用的电子设备之一,每个人手中几乎都有一部智能手机。随着技术的不断发展,手机App也成为人们日常生活中必不可少的一部分,它们可以为人们的生活提供无数便利服务,例如购物、社交、出行等等。不少人都会想,我也想设计一个手机App
2023-05-30
如何自己做一个app软件
制作APP软件一般步骤包括:确定功能,UI界面设计,编程实现,测试,发布。下面介绍具体步骤。一、确定功能首先,要确定APP软件的核心功能,这个功能是用户使用APP软件的最基本需求,也是APP软件是否存在的基础。用户需求大大超过了技术极限,那么一款优秀的AP
2023-05-30
可以用java语言自己开发app吗
Java是一种很流行的计算机编程语言,可以用来开发各种类型的应用程序。其中,Java的跨平台性能对开发人员来说是很有吸引力的一点。即使是初学者,也能在很短的时间内学会使用Java开发应用程序。下面,我将介绍如何使用Java开发应用程序。Java语言开发应用
2023-05-30
app开发之记住密码自动登录
随着移动互联网的快速发展,移动应用的使用率也越来越高。而随之而来的问题就是,每次登录都需要输入账号密码,对用户来说非常不便。因此,记住密码自动登录功能的实现就显得非常重要了。实现记住密码自动登录的原理其实就是将用户输入的账号密码保存在本地,并且在下一次打开
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1