短信自动转发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可以分为几个步骤:1.确定需求和目标市场在开始开发之前,你需要明确自己的需求和目标市场。确定这些因素将有助于你为你的应用程序开发做出有理有据的决策。2.选择合适的平台和工具选择合适的平台和工具将有助于你高效完成应用程序开发。例如,如果你想
2023-06-05
手机app制作自学教程
现在,手机app制作已经成为了一个非常热门的行业。越来越多的人开始尝试开发自己的手机应用程序,因为这不仅仅可以是一种兴趣爱好,也可能成为一种创造财富的机会。如果你也想学习如何制作手机app,那么本文章介绍了一些你需要掌握的基础知识和常用工具。1、选择好制作
2023-05-31
苹果app开发自学教程
苹果App开发是一项有趣且有前途的技能,它让你可以制作属于自己的游戏、工具、应用等等。本文将介绍如何自学苹果App开发。1. 了解编程语言学习苹果App开发,你需要了解苹果公司推荐的开发语言Swift,也可以学习Objective-C(有些库只支持Obje
2023-05-30
如何自己开发狼人app
开发一款狼人app需要以下基本步骤:1.明确需求:在开发狼人app之前,需要先明确需求,是要做一个单机版还是多人联机版,需要哪些功能等等。2.规划架构:在明确需求之后,需要规划架构,包括前端界面设计、后端架构设计、数据库设计等等。3.编写代码:根据需求和架
2023-05-30
如何自己制作一款app
随着智能手机的普及,移动应用程序已经成为人们生活中必不可少的一部分。想要对特定的群体进行目标定位,提高用户使用体验,有自己的app将是很好的选择。本文将介绍如何自己制作一款app。一、确定目标首先需要确定你的app的目标是什么,这可以帮助你推导出app所需
2023-05-30
如何自己做个手机app
做一款手机应用可以让你在互联网已经趋于饱和的市场中赢得一席之地,也可以让你提高IT技能,拓展个人职业生路。下面,我来介绍一下如何自己做一款手机应用。1.确定需求首先,你需要确定一款应用的需求,这个过程需要你结合自己的想法和市场趋势来进行,确保需求具有足够的
2023-05-30
哪种app可以自己制作漫画
随着互联网的不断发展,越来越多的人喜欢在网络上表达自己,其中之一就是通过漫画来表达自己的想法和创意。而制作漫画的过程中需要一定的技能和工具,那么本文将介绍一些可供使用的漫画制作应用程序,它们各有特色的功能,可以帮助人们轻松制作自己的漫画。一、Clip St
2023-05-30
讲述自己开发的app优势
我开发的App名为“记单词”,是一款专为学习英语的人士设计的应用程序。通过这个App,用户可以轻松地学习英语单词,并随时测试自己的掌握程度。以下是该App的优势:1. 采用了最新的学习方法“记单词”采用了最新的学习方法——分组记忆法。这个方法分成多个学习组
2023-05-30
堆糖app怎么自己做手帐
堆糖app是一个非常受欢迎的手帐软件,它提供了许多各种各样的手帐元素,例如贴纸、背景、文本框、插图等等。既然我们可以在堆糖app里找到这么丰富的手帐元素,那么自己做手帐也就不难了。下面就来详细介绍一下如何在堆糖app里自己制作手帐。1. 选择手帐模板首先打
2023-05-30
定制自媒体app开发多少钱
随着移动互联网的快速发展以及智能手机的普及,自媒体平台已经成为了一个热门的发展领域。自媒体平台在文化、教育、娱乐等领域都具备了无限的发展潜力,而且在对于宣传和营销上也有着极为广泛的应用,因此越来越多的人也开始涉足到自媒体的行业之中。而一款定制化的自媒体ap
2023-05-30
python做app自动化测试
Python是一种通用编程语言,可用于构建各种类型的应用程序和软件。自动化测试是软件开发过程的必要组成部分,它可以提高测试效率并提供更准确的测试结果。在本文中,我们将介绍如何使用Python编写自动化测试脚本来测试应用程序。1. 确定应用程序被测部分在开始
2023-05-30
3分钟简单制作自己的手机app
在当前移动互联网时代,手机应用程序(APP)成为越来越多人生活和工作的必需品。如果你也有一个自己的APP想法,但是缺少专业技能和资源,不要担心,下面我将介绍如何在三分钟内简单制作出自己的手机APP。首先,你需要使用一个叫做“APP制作平台”的工具,这些平台
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1