精华内容
下载资源
问答
  • 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);
    
    更多相关内容
  • 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日* * 使用前须要...

    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权限发送短信,支持android 4.0一下版本。
  • import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import android.Manifest; import android.app.PendingIntent; import android.content.Intent; import andro

    1.创建项目,新建Activity
    2.sendSmsActivity.java

    package 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–>信任此应用

    展开全文
  • 4、添加接收短信权限 下面放上具体的代码  activity_main.xml文件用于显示短信发送者号码和显示短信内容 <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android=...
  • 本文介绍了Android短信发送和广播接收者实现短信的监听,要注意Android清单中权限的设置以及广播的注册监听实现,废话不多说,代码如下: 以下就是 Android清单的XML AndroidManifest.xml <manifest xmlns:...
  • 短信相关权限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?

    展开全文
  • 兼容6.0以上经过动态获取权限读取手机短信息(时间,号码,内容,姓名,已读未读,接收还是发送等),通话记录(时间,号码,姓名,号码归属地,通话时长等)
  • android权限发送短信,支持android 4.0以上版本。.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 遇到一个特殊需求场景,一个第三方app需要预置到系统中,并且授予其写入短信数据库的权限。 代码修改位置:platform/frameworks/base /telephony/java/com/android/internal/telephony/SmsApplication.java 其中,...
  • android的很多功能都是需要权限才能操作,还是有很多功能我们是可以直接操作的,只需要在配置文件中注明权限就行了,可是有些虽然注明了权限,但是还是会提示说你没权限。比如删除短信、让手机进入休眠状态...
  • NULL 博文链接:https://ouyangfeng521.iteye.com/blog/1094857
  • 安卓发送短信

    2022-04-09 11:42:56
    安卓开发 发送短信
  • lagcat错误为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的导入。实时监听短信获取短信
  • 源码参考,欢迎下载
  • Android发送短信、打电话、发送邮件的程序集合。短信发送模式包括: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:34
    androidx.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
  • 实现发短信的代码如下 String content =;//短信内容 String phone = ;//电话号码 SmsManager sm = SmsManager.getDefault(); List<String> sms = sm.divideMessage(content); for (String smslist :sms){ sm....
  • Android Studio动态申请存储权限 软件首次安装在有新版本时,下载新版本出错,查看错误后发现是读写存储权限未授予,到设置中手动给权限后下载就会正常,接下来解决动态申请存储权限,如下: 1.XML中添加存储读写...
  • 主要代码如下:/*** 直接调用短信接口发短信*@paramphoneNumber*@parammessage*/public voidsendSMS(String phoneNumber,String message){//获取短信管理器android.telephony.SmsManager smsManager =android....
  • Android 调用发送短信的方法 功能:调用发送短信功能 1 、 权限 <uses android:name=android.permission.SEND_SMS/> 2、具体实现 Uri smstoUri = Uri.parse(smsto:); Intent intent = new Intent(Intent....
  • 本文实例讲述了Android发送短信方法。分享给大家供大家参考,具体如下:短信和打电话一样,都是android手机的基本功能,下面以实例说明android如何实现发送短信的功能。程序如下所示:import java.util.regex....
  • content" android:text="发送短信"/> android:id="@+id/telbut" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拨打电话 "/> 权限设置AndroidManifest.xml package=...
  • -- 发送消息--&gt;  &lt;uses-permission android:name="android.permission.SEND_SMS"/&gt;  &lt;!-- 阅读消息--&gt;  &lt;uses-permission android:name="android....
  • 《delphi XE开发微信支付Android获取手机存储权限、Android获取短信权限》 一、概述 二、源代码: unit uAndoidCommon; //ANDROID: interface {$IFDEF ANDROID} uses System.Permissions //:系统权限 ,...
  • Android发送短信的两种方法

    千次阅读 2020-09-26 09:48:30
    Android发送短信代码的两种方法 Android发送短信代码的两种方法 有两种方法可以实现发送短信: 其一是使用intent-startActivity,URI数据格式为”smsto:num”,调用的action为Intent.ACTION_SENDTO: Uri uri = Uri....
  • 利用Intent意图开发技术,实现了一个简易的备忘录,其功能模块包括拨打电话和发送短信等。注意修改配置文件AndroidManifest.xml拨打电话和发送短信权限

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,368
精华内容 8,147
关键字:

安卓发送短信的权限