短信自动转发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的制作过程。它可供用户在需要的时候自动转发手机收到的短信。这款应用程序不仅易于制作,而且非常实用。我们可以根据自己的需要进行调整和修改,将其运用到其他领域中。


相关知识:
自媒体logo制作哪个app好用
随着自媒体行业的飞速发展,越来越多的人加入其中,为了让自己的自媒体品牌更加鲜明,一个好的logo就显得尤为重要。那么,自媒体logo制作哪个app好用呢?在本文中,我们将介绍几个常用的自媒体logo制作工具,让您快速拥有一个专属于自己的logo。一、Can
2023-06-05
自己怎么在手机制作app
制作APP可以让你的创意变成现实,并能够将你的想法呈现在更广泛的受众面前。然而,你可能认为这是一个需要专业编程或高超技能的领域,但实际上并非如此。手机应用程序开发可以通过现有的平台和工具,以及一些简单的技能和知识来完成。下面是一个基本的介绍如何在手机上制作
2023-06-05
自己开发的app怎么盈利
自己开发的app可以通过多种途径进行盈利。下面介绍一些常见的盈利方式:1. 广告收入在应用程序中添加广告不仅可以为应用程序提供可靠的收入,而且对用户几乎没有影响。广告可以通过多种方式展示,例如,可以在应用程序中显示横幅广告、视频广告、插页式广告等。一般来说
2023-06-05
自己开发上线app成本
开发一款APP并将其上线需要涵盖到多个领域的知识,包括开发技术、UI设计、团队协作、市场营销等等。以下是一个大致的开发上线APP的流程以及相应的成本预估。1. 市场调研在开始开发前,需要先进行市场调研,确定自己的APP是否有市场需求,并且了解竞争情况和用户
2023-06-05
自贡商城app制作公司
自贡商城app是一种用于在移动设备上方便地进行购物、支付和物流追踪的应用程序。它通常由两个部分组成:客户端和服务器端。客户端是用户在手机或平板电脑上安装并使用的部分,而服务器端则是应用程序的运作核心,它负责处理用户的请求、管理用户账户信息、处理支付和物流信
2023-06-05
自贡app定制开发流程及费用
自贡是四川省的一座具有深厚历史文化底蕴的城市,随着科技的发展和智能化的进步,自贡市政府近年来也开始加强网络化建设,推广“互联网+”行动计划。在此背景下,自贡的企业和机构都开始了自贡app定制开发的需求。那么,对于这个问题,需求方该如何去了解定制开发的流程和
2023-06-05
自己打工做生意 要用app扣税吗
在现代社会,越来越多的人选择自己打工或做生意,这样既可以自由支配自己的时间,又可以获得更高的收入。但是,在个人打工或做生意的过程中,如何扣税成为了一个重要的问题。而现在,使用app扣税已经成为了一种趋势。接下来,我将介绍使用app扣税的原理和详细介绍。一、
2023-06-05
制作自己的手写字体手机app
制作自己的手写字体手机app,实际上就是将自己的手写字体制作成字体文件,然后通过手机应用程序让用户能够输入自己的文字,从而实现自定义字体的功能。在制作过程中,需要使用到一些辅助工具和技术,本文将详细介绍这些内容。一、准备工作在开始制作手写字体之前,需要准备
2023-06-05
印象app怎样制作自定义水印
印象app是一款功能丰富的图片处理软件,其中自定义水印功能是其常用功能之一,可以帮助用户在图片上添加自己的标识或信息,保护自己的版权和知识产权。接下来,我们将详细介绍印象app如何制作自定义水印,并分析其背后的原理。一、制作自定义水印1.打开印象app,选
2023-06-05
哪个app可以自己做公众号模板
公众号是现在比较流行的一种社交媒体,很多企业和个人都会选择在公众号上进行文章发布和宣传推广。为了在公众号中展示出个性化的风格和形式,很多人都会选择使用自己设计的公众号模板。那么,有哪些app可以自己做公众号模板呢?下面我将为大家详细介绍。1. 飞象公众号自
2023-05-30
开发自己的电影app
要开发一个自己的电影app,需要以下几个步骤:1.定义需求和功能首先需要明确自己的电影app要实现哪些功能和满足哪些需求。比如可以考虑以下功能:- 展示当前热映电影,包括电影海报、电影名称、电影标签、电影评分等信息- 提供电影搜索功能,用户可以搜索电影名称
2023-05-30
app源码开发自学教程
App源码开发可以让我们更好地学习和理解移动开发的原理和技术。在这篇文章中,我将介绍App源码开发的原理和一些自学的建议。App源码开发原理App源码开发是指通过学习其他人已经开发完成的App源代码,来掌握如何开发自己的App。通常这些源码是开源的,也就是
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1