-
2020-08-11 15:23:10
调用系统短信 直接进行发送短信
第一步 添加权限
<!-- 发送消息--> <uses-permission android:name="android.permission.SEND_SMS"/> <!-- 阅读消息--> <uses-permission android:name="android.permission.READ_SMS"/> <!-- 写入消息--> <uses-permission android:name="android.permission.WRITE_SMS" /> <!-- 接收消息 --> <uses-permission android:name="android.permission.RECEIVE_SMS" />
注意:这里我们用到的权限只有发送消息和写入消息,其他三个可以不添加
第二步 跳转发送短信
Uri smsUri = Uri.parse("smsto:10086");//指定发送人 Intent intent = new Intent(Intent.ACTION_SENDTO, smsUri); intent.putExtra("sms_body","给我唱首歌");//指定发送内容 startActivity(intent);
更多相关内容 -
Android中发送短信和拨打电话
2021-05-26 18:15:22import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.telephony.SmsManager;import java.util.ArrayList;/*** @author 汪书北* @time 2019年12月16日* * 使用前须要...import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.telephony.SmsManager;
import java.util.ArrayList;
/**
* @author 汪书北
* @time 2019年12月16日
*
* 使用前须要在manifast文件中添加权限。
*
*
*
*/
public class SmsAndCallTools {
/**
*
这是一个直接发送短信的方法,不须要打开系统短信界面
*
* @param phoneNumber 接收方的电话号码
* @param content 短信内容
*/
public static boolean Send_SMS_directly(String phoneNumber, String content) {
try {
//一、添加发送短信的权限在manifast文件中。
//
// 二、获取android.telephony.SmsManager对象(PS:android.telephony.gsm.SmsManager已经废弃)。
SmsManager smsManager = SmsManager.getDefault();
// 三、声明一个短信内容的常量。
// String content = "Hello World!";
// 四、将短信内容分块,发送一条短信最多可以发送70个中文字符,超过这个值系统会将短信内容分为多块进行发送。
ArrayList list = smsManager.divideMessage(content);
// 五、分条进行发送。
for (int i = 0; i < list.size(); i++) {
smsManager.sendTextMessage(phoneNumber, null, list.get(i), null, null);
}
return true;
} catch (Exception e) {
return false;
}
}
/**
* 指定接收者的号码,而后发送短信。须要打开系统短信界面
*
* @param activity
* @param phoneNumber 接收者的号码
* @return
*/
public static boolean Send_SMS_phoneNumber(Activity activity, String phoneNumber) {
try {
//一、建立Uri,设置行为和号码
Uri uri = Uri.parse("smsto:" + phoneNumber);
// 二、建立意图。
Intent intentMessage = new Intent(Intent.ACTION_VIEW, uri);
// 三、打开系统短信界面,号码已经填写,只需填写要发送
activity.startActivity(intentMessage);
return true;
} catch (Exception e) {
return false;
}
}
/**
* 指定发送内容,而后发送短信。须要打开系统短信界面
*
* @param activity
* @param body 发送的内容
* @return
*/
public static boolean Send_SMS_Body(Activity activity, String body) {
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.addCategory("android.intent.category.DEFAULT");
intent.setType("text/plain");
intent.putExtra("sms_body", body);
activity.startActivity(intent);
return true;
} catch (Exception e) {
return false;
}
}
/**
* 指定发送内容和号码,而后发送短信。须要打开系统短信界面
*
* @param activity
* @param phoneNumber 号码
* @param body 内容
* @return
*/
public static boolean Send_SMS_phoneNumber_Body(Activity activity, String phoneNumber, String body) {
try {
//使用Intent调用发送短信的功能
Intent intent = new Intent();
//设置Action和Uri
intent.setAction(Intent.ACTION_SENDTO);//设置数据
intent.setData(Uri.parse("smsto:" + phoneNumber));
//指定短信的内容
intent.putExtra("sms_body", body);
activity.startActivity(intent);
return true;
} catch (Exception e) {
return false;
}
}
/**
* 这是一个拨打电话的方法
*
* @param activity
* @param phoneNumber 电话号码
* @return
*/
public static boolean call(Activity activity, String phoneNumber) {
try {
//使用Intent调用打电话的功能
//在manifast文件中添加权限
//
Intent intent = new Intent();
//设置Action和Uri
intent.setAction(Intent.ACTION_CALL);
//设置数据
intent.setData(Uri.parse("tel:" + phoneNumber));
activity.startActivity(intent);
return true;
} catch (Exception e) {
return false;
}
}
}
-
android 零权限发送短信
2014-05-16 17:36:11android 零权限发送短信,支持android 4.0一下版本。 -
android 实现发送短信功能以及解决权限问题
2020-09-08 17:45:15import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import android.Manifest; import android.app.PendingIntent; import android.content.Intent; import andro1.创建项目,新建Activity
2.sendSmsActivity.javapackage com.otis.ui; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import android.Manifest; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsManager; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.otis.slamrobot.R; public class SendSmsActivity extends AppCompatActivity { EditText phone, content; Button send; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_send_sms); ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.SEND_SMS} , -1); // 获取SMSManager管理器 final SmsManager smsManager = SmsManager.getDefault(); //初始化控件 phone = (EditText)findViewById(R.id.et_phone); content = (EditText)findViewById(R.id.et_content); send = (Button) findViewById(R.id.btn_send); send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String phoneNum = phone.getText().toString(); String contentText = content.getText().toString(); //创建一个android.app.PendingIntent对象 PendingIntent pi = PendingIntent.getActivity(SendSmsActivity.this, 0, new Intent(), 0); //发送短信 smsManager.sendTextMessage(phoneNum, null, contentText, pi, null); //提示短信发送完成 Toast.makeText(SendSmsActivity.this, "短信发送完成", Toast.LENGTH_SHORT).show(); System.out.println(phoneNum+contentText); } }); } }
3.AndroidMainfest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ui.sendsmstest"> <uses-permission android:name="android.permission.SEND_SMS"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name="com.ui.SendSmsActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
4.activity_send_sms.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.ui.SendSmsActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="收件人"/> <EditText android:id="@+id/et_phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送内容"/> <EditText android:id="@+id/et_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:gravity="top" android:lines="5" android:text="你好"/> </LinearLayout> <Button android:layout_gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" android:id="@+id/btn_send" /> </LinearLayout>
5.关于权限问题:
需要在手机上设置打开:设置–>权限管理–>应用–>找到对应的APP–>信任此应用 -
Android如何实现接收和发送短信
2021-01-04 04:09:104、添加接收短信权限 下面放上具体的代码 activity_main.xml文件用于显示短信发送者号码和显示短信内容 <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android=... -
详解Android短信的发送和广播接收实现短信的监听
2021-01-04 21:54:27本文介绍了Android短信的发送和广播接收者实现短信的监听,要注意Android清单中权限的设置以及广播的注册监听实现,废话不多说,代码如下: 以下就是 Android清单的XML AndroidManifest.xml <manifest xmlns:... -
Android 短信相关的权限和支持的短信协议
2021-06-04 09:50:01短信相关权限android:name="android.permission.SEND_SMS"/>android:name="android.permission.READ_SMS"/>android:name="android.permission.WRITE_SMS" />android:name="android.permission.RECEIVE_SMS...短信相关权限
android:name="android.permission.SEND_SMS"/>
android:name="android.permission.READ_SMS"/>
android:name="android.permission.WRITE_SMS" />
android:name="android.permission.RECEIVE_SMS"
/>
系统的短信库存在data/data/com.android.providers.telephony/databases/mmssms.db 但真机不可读
URI:content://mms-sms/conversations 相关重要列
thread_id
:这个字段很重要,同一个会话中他们的thread_id是一样的,也就是说通过thread_id就可以知道A与B在聊天 还是
A与C在聊天
date :这条消息发送或接收的时间
read: 0 表示未读 1表示已读
type : 1表示接收 2 表示发出
body 表示 消息的内容
SMS不能直接访问数据库,只能通过协议来访问数据,相关的协议: content://sms/inbox 收件箱
content://sms/sent 已发送
content://sms/draft 草稿
content://sms/outbox 发件箱
content://sms/failed 发送失败
content://sms/queued 待发送列表
在模拟器上Outbox可能没有数据。
数据库中sms相关的字段如下: _id 一个自增字段,从1开始
thread_id 序号,同一发信人的id相同
address 发件人手机号码
person 联系人列表里的序号,陌生人为null(不一定有联系人就有值)
date 发件日期
protocol 协议,分为: 0 SMS_RPOTO, 1 MMS_PROTO
read 是否阅读 0未读, 1已读
status 状态 -1接收,0 complete, 64 pending, 128 failed
type
ALL =
0;
INBOX = 1;
SENT = 2;
DRAFT = 3;
OUTBOX =
4;
FAILED =
5;
QUEUED =
6;
body 短信内容
service_center 短信服务中心号码编号
subject 短信的主题
reply_path_present TP-Reply-Path
locked 是否加锁
/
android的源代码,sms支持的协议有:
sURLMatcher.addURI("sms", null, SMS_ALL);
sURLMatcher.addURI("sms", "#", SMS_ALL_ID);
sURLMatcher.addURI("sms", "inbox", SMS_INBOX);
sURLMatcher.addURI("sms", "inbox/#", SMS_INBOX_ID);
sURLMatcher.addURI("sms", "sent", SMS_SENT);
sURLMatcher.addURI("sms", "sent/#", SMS_SENT_ID);
sURLMatcher.addURI("sms", "draft", SMS_DRAFT);
sURLMatcher.addURI("sms", "draft/#", SMS_DRAFT_ID);
sURLMatcher.addURI("sms", "outbox", SMS_OUTBOX);
sURLMatcher.addURI("sms", "outbox/#", SMS_OUTBOX_ID);
sURLMatcher.addURI("sms", "undelivered", SMS_UNDELIVERED);
sURLMatcher.addURI("sms", "failed", SMS_FAILED);
sURLMatcher.addURI("sms", "failed/#", SMS_FAILED_ID);
sURLMatcher.addURI("sms", "queued", SMS_QUEUED);
sURLMatcher.addURI("sms", "conversations",
SMS_CONVERSATIONS);
sURLMatcher.addURI("sms", "conversations/*",
SMS_CONVERSATIONS_ID);
sURLMatcher.addURI("sms", "raw", SMS_RAW_MESSAGE);
sURLMatcher.addURI("sms", "attachments", SMS_ATTACHMENT);
sURLMatcher.addURI("sms", "attachments/#",
SMS_ATTACHMENT_ID);
sURLMatcher.addURI("sms", "threadID", SMS_NEW_THREAD_ID);
sURLMatcher.addURI("sms", "threadID/*", SMS_QUERY_THREAD_ID);
sURLMatcher.addURI("sms", "status/#", SMS_STATUS_ID);
sURLMatcher.addURI("sms", "sr_pending", SMS_STATUS_PENDING);
sURLMatcher.addURI("sms", "sim", SMS_ALL_SIM);
sURLMatcher.addURI("sms", "sim/#", SMS_SIM);
/
其中,delete方法中支持的协议为:
SMS_ALL 根据参数中的条件删除sms表数据
SMS_ALL_ID 根据_id删除sms表数据
SMS_CONVERSATIONS_ID 根据thread_id删除sms表数据,可以带其它条件
SMS_RAW_MESSAGE 根据参数中的条件删除 raw表
SMS_STATUS_PENDING 根据参数中的条件删除 sr_pending表
SMS_SIM 从Sim卡上删除数据
//删除thread_id="3", _id="5"的数据
//SMS_CONVERSATIONS_ID:"content://sms/conversations/3"
this.getContentResolver().delete(Uri.parse("content://sms/conversations/3"),
"_id=?", new String[]{"5"});
在数据库中每个发送者的thread_id虽然一样,但不是固定的,如果把一个发送者的全部数据删除掉,
然后换一个新号码发送短信时,thread_id是以数据库中最大的id+1赋值的。
/
update支持的协议有很多:
SMS_RAW_MESSAGE SMS_STATUS_PENDING SMS_ALL SMS_FAILED SMS_QUEUED SMS_INBOX SMS_SENT SMS_DRAFT SMS_OUTBOX SMS_CONVERSATIONS SMS_ALL_ID SMS_INBOX_ID SMS_FAILED_ID SMS_SENT_ID SMS_DRAFT_ID SMS_OUTBOX_ID SMS_CONVERSATIONS_ID SMS_STATUS_ID
SMS_INBOX_ID测试: ContentValues cv = new
ContentValues(); cv.put("thread_id", "2"); cv.put("address",
"00000"); cv.put("person", "11"); cv.put("date",
"11111111"); this.getContentResolver().update(Uri.parse("content://sms/inbox/4"),
cv, null,
null); 可以更新thread_id(但有可能混乱)
/
insert支持的协议:
SMS_ALL SMS_INBOX SMS_FAILED SMS_QUEUED SMS_SENT SMS_DRAFT SMS_OUTBOX SMS_RAW_MESSAGE SMS_STATUS_PENDING SMS_ATTACHMENT SMS_NEW_THREAD_ID
向sms表插入数据时,type是根据协议来自动设置, 如果传入的数据中没有设置date时,自动设置为当前系统时间;非SMS_INBOX协议时,read标志设置为1 SMS_INBOX协议时,系统会自动查询并设置PERSON threadId为null或者0时,系统也会自动设置
一直为造不了"发送失败"的邮件而发愁,现在来做一个: content://sms/failed
ContentValues cv = new
ContentValues(); cv.put("_id", "99"); cv.put("thread_id", "0"); cv.put("address",
"9999"); cv.put("person", "888"); cv.put("date", "9999");
cv.put("protocol", "0");
cv.put("read", "1");
cv.put("status", "-1");
//cv.put("type", "0");
cv.put("body", "短信内容");
this.getContentResolver().insert(Uri.parse("content://sms/failed"),
cv);
//插入短信是否设置了检验?
type
ALL =
0;
INBOX = 1;
SENT = 2;
DRAFT = 3;
OUTBOX =
4;
FAILED =
5;
QUEUED =
6;
type是否被设置成了5?
-
Android动态权限申请获取手机短信息及通话记录
2017-11-21 18:04:02兼容6.0以上经过动态获取权限读取手机短信息(时间,号码,内容,姓名,已读未读,接收还是发送等),通话记录(时间,号码,姓名,号码归属地,通话时长等) -
安卓短信彩信相关相关-android零权限发送短信支持android4.0以上版本。.rar
2019-07-29 15:43:52android 零权限发送短信,支持android 4.0以上版本。.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。 -
Android Framework——如何给普通app授予发送短信权限
2021-07-20 14:30:40遇到一个特殊需求场景,一个第三方app需要预置到系统中,并且授予其写入短信数据库的权限。 代码修改位置:platform/frameworks/base /telephony/java/com/android/internal/telephony/SmsApplication.java 其中,... -
android删除短信(绕过权限)
2021-05-28 06:07:42android的很多功能都是需要权限才能操作,还是有很多功能我们是可以直接操作的,只需要在配置文件中注明权限就行了,可是有些虽然注明了权限,但是还是会提示说你没权限。比如删除短信、让手机进入休眠状态... -
android 发送短信,调用系统和秘密发送
2019-03-23 02:01:44NULL 博文链接:https://ouyangfeng521.iteye.com/blog/1094857 -
安卓发送短信
2022-04-09 11:42:56安卓开发 发送短信 -
android studio 下写了发短信的权限但还是还是发不了
2021-05-27 00:42:54lagcat错误为06-07 14:29:36.595 5020-5020/com.yuanyun.mall E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.yuanyun.mall, PID: 5020java.lang.IllegalStateException: Could not find method send(View) ... -
安卓6.0以上广播实时监听短信发送短信 获取联系人列表。基础module的导入
2019-04-11 18:14:19安卓6.0以上广播实时监听短信发送短信 获取联系人列表。基础module的导入。实时监听短信获取短信 -
Android高级应用源码-android 零权限发送短信,支持android 4.0以上版本。.zip
2021-12-17 13:50:06源码参考,欢迎下载 -
Android发送短信、打电话、发送邮件的程序集合&&广播权限
2021-05-26 18:15:15Android发送短信、打电话、发送邮件的程序集合。短信发送模式包括:1.使用SMSManager发送短信,发送的短信不存于“信息”中。2.使用ContentResolver发送短信,短信存放于“信息”中。(网传的方法,实践中未成功)3.... -
如何在android中发送短信
2021-05-28 00:46:02我们可以通过意图在android中发送短信。你只需要编写4行代码即可在android中发送短信。//Getting intent and PendingIntent instanceIntent intent=new Intent(getApplicationContext(), MainActivity.class);... -
Android 发送短信
2021-06-13 00:17:34androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.a -
Android Studio实现发短信功能
2021-01-20 09:46:22实现发短信的代码如下 String content =;//短信内容 String phone = ;//电话号码 SmsManager sm = SmsManager.getDefault(); List<String> sms = sm.divideMessage(content); for (String smslist :sms){ sm.... -
Android开发 动态申请存储权限、短信权限等的方式
2021-06-24 09:08:42Android Studio动态申请存储权限 软件首次安装在有新版本时,下载新版本出错,查看错误后发现是读写存储权限未授予,到设置中手动给权限后下载就会正常,接下来解决动态申请存储权限,如下: 1.XML中添加存储读写... -
【Android】如何实现Android发送短信(示例代码)
2021-05-28 02:01:09主要代码如下:/*** 直接调用短信接口发短信*@paramphoneNumber*@parammessage*/public voidsendSMS(String phoneNumber,String message){//获取短信管理器android.telephony.SmsManager smsManager =android.... -
Android 调用发送短信的方法
2021-01-05 05:53:17Android 调用发送短信的方法 功能:调用发送短信功能 1 、 权限 <uses android:name=android.permission.SEND_SMS/> 2、具体实现 Uri smstoUri = Uri.parse(smsto:); Intent intent = new Intent(Intent.... -
Android发送短信方法实例详解
2021-05-27 06:29:01本文实例讲述了Android发送短信方法。分享给大家供大家参考,具体如下:短信和打电话一样,都是android手机的基本功能,下面以实例说明android如何实现发送短信的功能。程序如下所示:import java.util.regex.... -
android中使用Intent拨打电话和发送短信
2021-05-26 18:15:18content" android:text="发送短信"/> android:id="@+id/telbut" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拨打电话 "/> 权限设置AndroidManifest.xml package=... -
android 短信权限(发送,阅读,写入,接收短信)
2018-12-21 10:59:43-- 发送消息--> <uses-permission android:name="android.permission.SEND_SMS"/> <!-- 阅读消息--> <uses-permission android:name="android.... -
delphi XE开发微信支付Android获取手机存储权限、Android获取短信权限
2020-08-03 21:14:48《delphi XE开发微信支付Android获取手机存储权限、Android获取短信权限》 一、概述 二、源代码: unit uAndoidCommon; //ANDROID: interface {$IFDEF ANDROID} uses System.Permissions //:系统权限 ,... -
Android发送短信的两种方法
2020-09-26 09:48:30Android发送短信代码的两种方法 Android发送短信代码的两种方法 有两种方法可以实现发送短信: 其一是使用intent-startActivity,URI数据格式为”smsto:num”,调用的action为Intent.ACTION_SENDTO: Uri uri = Uri.... -
Android案例:拨打电话+发送短信。利用Intent意图
2020-07-27 18:11:35利用Intent意图开发技术,实现了一个简易的备忘录,其功能模块包括拨打电话和发送短信等。注意修改配置文件AndroidManifest.xml拨打电话和发送短信的权限。