短信自动转发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
随着智能手机的普及,人们越来越喜欢使用手机拍摄自己的照片。但是,照片拍摄后,如果自己的脸有点瑕疵,就会觉得不够美丽。这时,美颜相机应运而生。美颜相机是一种能够对图片进行美化处理的软件,它能对照片进行美容,磨皮,修图等一系列处理,让用户的照片更加完美。美颜相
2023-06-05
做自己玩的app
现在,拥有自己的个人应用程序(APP)已经成为了一种趋势。虽然,可能对很多人来说,想象自己如何创造一个应用程序并且发布到市场上可能会有些困难,但实际上,这个过程是相对简单的。以下是开发个人应用程序的原理和详细介绍。原理:在开发一款个人应用程序之前,你需要确
2023-06-05
自营拍卖app制作软件
自营拍卖app是一种以拍卖为主要功能的手机应用程序,其主要通过网络连接,实现用户的拍卖竞标、商品展示、交易流程等功能,确保用户拥有安全、迅速、便捷、专业的购买和交易体验。下面,我们将详细介绍如何制作自营拍卖app。1.需求分析首先,我们需要了解市场需求、用
2023-06-05
自己做一个购物app多少钱啊
做一个购物app需要花费的费用因开发者、平台、功能和服务等因素而异。本文将从原理和详细介绍两个方面来分析这个问题。一、购物app的原理购物app主要是通过服务端和客户端两个端口来实现。它的主要构成包括:服务端、数据库、管理后台和客户端。服务端是购物app的
2023-06-05
自己制作app页面的软件
制作App页面的软件有很多种,其中比较常用的有:Sketch、Adobe XD、Figma、InVision Studio等。首先介绍Sketch,Sketch是一种Mac平台上设计工具,它最擅长UI设计,非常实用,因此,它在设计师和初学者中很受欢迎。在S
2023-06-05
自贡app定制开发设计公司
自贡是四川省的一个地级市,位于四川盆地东部,拥有丰富的历史文化和资源优势。近年来,随着互联网的快速发展,自贡市政府开始积极推进数字化、智能化建设,加强公共服务的普及和优化。为此,自贡市各级政府和企事业单位都在纷纷研发和使用各种互联网应用程序,其中就包括了自
2023-06-05
怎么自制作app
自制APP是一件非常有趣和有用的事情,因为它可以让你将自己的想法变成实际的产品,并且与其他人分享。但是,对于那些没有编程经验的人来说,这可能是一件非常困难和挑战性的事情。在本文中,我将向您介绍一些制作APP的基本原理和方法,希望这能对您的自制APP之旅有所
2023-06-05
怎么在手机上自己做一个app
在现代社会,智能手机已经成为人们日常生活中不可或缺的一部分。手机应用程序(app)也成为人们常用的工具,同时也成为业界一项高度关注的技术。如果你也想在手机上制作自己的app,本文将为你详细介绍如何做到这一点。制作app的方法很多,但通常分为两种:一种是根据
2023-06-05
移动app开发用自备电脑吗
移动App开发是一种需要技术和工具的过程,并且主要以软件开发为基础。正确的开发环境是非常重要的,所以在移动App开发的过程中,自备电脑是必要的。首先,自备电脑是移动App开发的前提条件。安装一些必要的工具和软件需要在自己的电脑上进行,否则无法顺利进行开发。
2023-06-05
小白自建app
随着智能手机的普及,越来越多的人开始使用app。而许多用户不仅是使用app,还希望自己能够创建一个app。本文将为你介绍如何自建app。一、了解app构成在创建自己的app之前,需要先了解一个app基本的构成。一个app由以下几部分构成:1.用户界面(UI
2023-05-31
如何开发自己app
开发一款自己的App对于程序员来说是很有成就感的事情,而且在当今的移动互联网时代,自己做一款App也是很酷的。开发App的过程中,需要掌握一定的编程知识和技能,以及相应的开发工具和平台。下面,我们将详细介绍开发自己的App的原理和步骤。一、需求调研与功能规
2023-05-30
企业app是自建还是找外包
企业app是指为满足企业内部管理、协同和业务需求而定制开发的移动应用程序。随着移动互联网的普及和企业数字化转型的加速,越来越多的企业需要拥有自己的企业app来提升内部管理效率、优化业务流程和提升员工生产力。但是,企业app是自建还是找外包这个问题在很多企业
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1