短信自动转发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,并探讨其各自的优劣势。一、WordPressWordPress作为最
2023-06-05
自己做故事小说的app
自己做故事小说的app,主要分为以下几个步骤:一、确定需求和功能开发一个app之前,首先需要确定用户的需求和app需要实现的功能。在这个过程中,需要考虑到用户的使用习惯和体验,以及市场的竞争情况等等。一些常见的功能包括:1. 创作工具:提供给用户创作故事的
2023-06-05
自己做团购app可以吗
团购APP是一种特殊的电商平台,是针对消费者而言的,用户通过在APP上参与团购而获得商品或服务的享受。这种商业模式是针对线下实体店铺,通过线上活动展开销售,通过团购价获得更多消费者的青睐。如果你也想要做一个团购APP,可以遵循以下几个步骤。1.确定APP的
2023-06-05
自己做app去哪里对接广告商
要在自己的App上接广告,一般需要通过广告交易平台来对接广告商。广告交易平台可以将App开发者和广告商联系在一起,让广告商在App上投放广告,同时帮助App开发者实现盈利。目前市场上比较知名的广告交易平台包括AdMob、百度广告联盟、友盟等等。接下来,我们
2023-06-05
自己开发一个app运营费用多少
自开发一个app需要投入的费用涉及到多个方面,包括技术开发支出、设备资金、人工成本和市场推广费用等等。下面将对这些费用进行详细介绍。1. 技术开发支出这是应用开发中最显而易见的费用了,技术开发支出包括了软件开发人员的薪资、开发工具的购买和租赁费用、云端存储
2023-06-05
自己可以制作手机app软件吗
制作手机app软件是一项需要具备一定技术水平的工作,需要有一定的编程基础和计算机知识。在这篇文章中,我们将介绍一些制作手机app软件的原理和步骤。一、选择开发平台在制作手机app软件之前,我们需要选择一种适合自己的开发平台。目前市场上有很多种开发平台可供选
2023-06-05
怎么能做一个属于自己的app网站
要做一个属于自己的app网站,需要经过以下几个步骤:1.确定网站目标在做任何事情之前,需要先确定网站的目标。比如,你想创建一个提供美食菜谱和烹饪技巧的app网站。这个目标可以进一步拆分成以下几个子目标:-提供高质量的美食菜谱。-提供让用户轻松学会烹饪的教程
2023-06-05
有哪些自营商城app开发公司
随着电商行业的逐渐成熟和移动互联网的普及,自营商城app已经成为各大企业推广自身品牌和销售产品的重要方式之一。下面将介绍几家国内著名的自营商城app开发公司。1. 小米科技小米科技自2010年成立以来,在智能硬件、安全技术、云服务和电商等领域取得了巨大的成
2023-06-05
如何自学开发app零基础
现如今,移动应用 (mobile app) 已成为人们生活不可或缺的一部分,通过使用移动应用,可以为我们提供各种各样的服务,比如购物、社交、学习、娱乐等等。如果你有兴趣学习如何开发自己的移动应用,不必担心自己没有任何编程经验或经验不足,下面一步一步来给大家
2023-05-30
如何免费自建app
在互联网时代,手机已经成为人们不可或缺的物品,简单的通信、看视频、购物等需求已经十分普遍。而很多人由于业余时间较多或是对计算机有浓厚兴趣想自己动手搭建一个应用程序。在这里,我们会详细介绍一下如何免费自建一个应用程序。首先,前置条件为掌握编程语言。在开发过程
2023-05-30
教你制作一个属于自己的app
制作属于自己的app,需要一定的技术知识和耐心。本文将为初学者介绍实现这一目标的基本原理。1. 确定app的类型和功能在开始与任何app开发工作之前,您需要先确定您的app的类型和功能。这包括您的app的目标受众,设计的界面和功能,例如游戏、电商、社交、新
2023-05-30
安卓app开发自学
Android App开发是应用程序开发的一种形式,和其他形式的应用程序开发一样,需要掌握一定的理论知识和技术实践,才能设计出优秀的应用程序。如果你想自学Android App开发,下面是一份详尽的指导。1. Java基础知识Java 是 Android
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1