发送短信权限不起作用

2024-01-09

我想发送一条简单的消息,我已经<uses-permission android:name="android.permission.SEND_SMS"/>在我的清单中,但我总是得到:java.lang.SecurityException: Sending SMS message: uid 10064 does not have android.permission.SEND_SMS.

我检查了这个答案 https://stackoverflow.com/questions/23210056/sms-permissions-not-working-no-matter-where-i-put-the-permission-tag,但还是不行。

这是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.roa.sendsms" >


<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=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

这是我的代码:

package com.roa.sendsms;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.telephony.SmsManager;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    Button sendButton =  (Button)findViewById(R.id.sendButton);
    sendButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sendSms(phoneNumber, "you get message from roish app!!");
        }
    });
}

private void sendSms(String phoneNumber, String message){
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, null, null);
}

}

感谢大家。


尝试使用这样的东西。未经测试,但应该可以正常工作。当您在这里发现问题时请留言。

这只是为了展示 Android M 中的权限授予是如何工作的。请通过上面提到的功能来扩展它Android 权限教程网站 http://developer.android.com/training/permissions/requesting.html.

您将需要添加ActivityCompat.shouldShowRequestPermissionRationale http://developer.android.com/reference/android/support/v4/app/ActivityCompat.html#shouldShowRequestPermissionRationale%28android.app.Activity,%20java.lang.String%29检查以匹配最佳实践。我可以扩展这个答案,但我认为没有必要。只需确保您在运行时授予权限(或使用targetSdkVersion低于 23 - 但不建议这样做)

private static final int PERMISSION_SEND_SMS = 123;

private void requestSmsPermission() {

    // check permission is given
    if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
        // request permission (see result in onRequestPermissionsResult() method)
        ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.SEND_SMS},
            PERMISSION_SEND_SMS);
    } else {
        // permission already granted run sms send
        sendSms(phone, message);
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {

            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission was granted
                sendSms(phone, message);
            } else {
                // permission denied
            }
            return;
        }
    }
}

private void sendSms(String phoneNumber, String message){
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, null, null);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

发送短信权限不起作用 的相关文章

  • 关闭 Android 中的飞行模式

    如果 num gt 50 我想关闭飞行模式 我实现了这段代码 来自在 Android 中切换飞行模式 https stackoverflow com questions 5533881 toggle airplane mode in and
  • Android KeyBoard.Key 禁用图标 预览特殊键?

    我通过实现 KeyboardView OnKeyboardActionListener 接口来自定义自己的软键盘 按下按键时 将显示预览弹出窗口 我的问题是如何禁用 SHIFT 和 DELETE 等特殊键的预览弹出窗口 我尝试将 andro
  • 如何检测和管理来电(Android)?

    我想创建一个应用程序 可以检测来电并在一定数量的蜂鸣声 响铃 后启动我的自定义活动 我的意思是在 2 或 3 或 5 声蜂鸣声 响铃 后我的activity被触发 我该怎么做 Thanks 我认为您无法计算自来电开始以来电话响了多少次 无法
  • 按回键隐藏软键盘

    我有一个EditText in an Activity我希望当我打开它时它处于活动状态并且软键盘处于打开状态Activity 这是我的xml for EditText
  • 应用程序实例是否始终在任何活动之前创建?

    在 Android 中 您可以通过扩展 Application 类并在 Manifest 中声明名称来提供您自己的 Application 类实现 我的问题是 这个实现是否总是在初始活动之前创建 或者活动可以在应用程序实例有时间创建之前启动
  • AppCompat v21 工具栏更改徽标大小

    我正在从以前的操作栏迁移到 appcompat v21 中的新工具栏功能 我仍然想将徽标保留在操作栏 工具栏 的左上角 为此 我在布局中添加了支持工具栏 并为其创建了一个新的工具栏 app theme style NewToolBarSty
  • 如何使用 adb 在设备上安装现有的 Android 应用程序?

    在开发过程中 我使用类似的东西 adb s 192 168 1 77 5555 uninstall com myApp app adb s 192 168 1 77 5555 install path to android debug ap
  • React Native Android 发布 apk 是调试,而不是发布

    我有一个现有的 Android 应用程序 我已根据以下内容将 React Native v0 30 活动添加到项目中docs http facebook github io react native releases next docs i
  • 监听什么来检测 Android 中的请勿打扰模式更改?

    我希望我的应用程序在手机设置为请勿打扰模式 仅限闹钟 仅限优先级或完全静音 时显示通知 通过聆听 这效果非常好android media RINGER MODE CHANGED在快速设置中检查此模式并在已选择的选项卡中选择模式时 但是 当选
  • 没有调用addToBackStack,片段仍然添加到backstack,为什么?

    我正在制作我的片段更换器助手类 但我遇到了一些问题 我称之为FragmentChanger 它有一个fragmentContainer 这是一个ViewGroup 其中包含我想展示的所有片段 我已经做了我自己的replace Fragmen
  • 加快 ImageView 中的缩放功能

    我目前正在处理非常大的图像 7 10mb 由于多种原因无法调整大小或压缩 现在 我们的想法是在自定义 ImageView 中显示它们 使用户能够进行双击缩放 捏合缩放等 我使用这个库来完成这项工作 https github com Mike
  • Android 改变 ImageView / Bitmap 的颜色

    我需要找到一种方法来改变 Android 中位图的颜色 我需要在我的应用程序中平滑地替换 更改椭圆形图像的颜色 具体取决于int价值 我需要类似的东西myValue 5比改变我的图像的颜色RED and if myValue 322将颜色更
  • 通过列表视图检查动态生成的复选框时遇到问题

    我知道其他成员已经提出了这个问题 一些成员也给出了解决方案 但问题是我没有找到任何适合我的应用程序的解决方案 我正在创建一个应用程序 其中我有一个屏幕 它将显示动态列表视图 其中包含列表项 复选框和三个文本视图 一个用于候选人姓名 另外两个
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • 在 Android 中上传文件出现内存不足错误

    我的上传代码如下 String end r n String twoHyphens String boundary try URL url new URL ActionUrl HttpURLConnection con HttpURLCon
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • Android 中的 Google Places API - 适用于个人用户的 API_KEY

    我已经浏览了与在 Android 应用程序中使用 Places API 相关的 Android 文档和其他博客 到处都建议使用 API KEY 来调用 REST 服务 API KEY 在整个项目 应用程序中都是相同的 每天的请求数限制为 1
  • Android ADT Eclipse 插件,parseSDKContent 失败

    我刚刚设置了我的第一个 Android 开发环境 其中包括 日食3 5 Mac OS X 10 5 适用于 x86 mac 的 Android SDK ADT Eclipse 插件 0 9 6 我已将 set PATH 设置为我的 SDK
  • putFragment() - 片段 x 当前不在 FragmentManager 中

    上面的标题被问了很多次 但答案似乎与FragmentStatePagerAdapter这与我的问题无关 我正在使用该方法putFragment Bundle String Fragment 直接地 The 安卓文档 http develop

随机推荐

  • Scala 的扩展性是否比其他 JVM 语言更好?

    这是我目前知道的唯一提问方式 据了解 Scala 使用 Java 虚拟机 我以为朱比也这么做了 Twitter 将其中间件切换为 Scala 他们可以做同样的事情并使用 Jruby 吗 他们是否可以从 Jruby 开始 而不会因为扩展问题而
  • 隐藏/保护 php-engine 配置文件的最佳实践?

    我刚刚接到一项任务 需要开发一个旧式开发的网页 这意味着 常用的变量 常量和数据库连接变量都在查看php engine中 而不是在单独的文件中 我想我会将它们放入 config php 或 config inc 文件中 然后与 requir
  • 无法将登录页面重定向到安全页面

    我有一个使用 php 创建的登录页面 但在正确登录后无法将其带到管理页面 我知道我使用的登录名是正确的 因为我刚刚创建了它 如果它是错误的 它应该告诉我 然而 一旦我登录 整个页面就变成空白 网址显示我仍在登录页面而不是管理页面 我检查了错
  • 在 OpenAPI 2 中等效使用 oneOf(来自 OpenAPI 3)

    我怎样才能调整这个片段oneOf到等效的 OpenAPI 2 0 版本 formats type array description Possible parameter format items oneOf type string typ
  • kzalloc() - 单次调用的最大大小?

    我们可以在一次调用中使用 kzalloc 分配的最大大小是多少 这是一个非常常见的问题 另外 如果我可以验证该值 请告诉我 上限 在单个 kmalloc kzalloc 请求中可以分配的字节数 是以下函数 处理器 实际上是页面大小 以及 好
  • 如何将两个mySQL数据库合并为一个?

    我有两个数据库 每个数据库包含不同的表 leave sql 和 crm sql 我想将所有休假表转移到 crm 数据库中 我该怎么做呢 如果其他数据库具有与叶子数据库不同的表 那么您所需要做的就是将数据导入到 crm 数据库中 最后 确保您
  • plot() 和 do.call():当使用“...”时,如何将表达式传递给绘图标题?

    当运行以下代码时 我得到Error in as graphicsAnnot text could not find function bold 我怎样才能解决这个问题 my qq lt function x main expression
  • jQuery:如何制作可折叠的树导航?

    我有标题 每个标题都有子项目 当我单击标题时 我希望它切换查看或显示标题内容 这是我到目前为止所拥有的 j h2 click function if j this next is hidden j this next show else j
  • Flutter:如何修复底部溢出

    我有一个带有列布局的 Flutter Widget 它有两个容器 其中一个有一个ListView builder 当页面呈现时我得到一个 底部溢出 169px 我不知道如何解决它 我在谷歌上搜索了解决方案 并尝试了各种方法 例如包装一个或多
  • 如何找到缺失的行?

    我有两个相同的表 A 和 B 这两个表具有相同的字段 例如表 A bin storage plant 和 B bin storage plant 但是当我检查数据时 表A有5238行 B表有5249行 所以我不知道缺少哪11行 我需要帮助来
  • UITableViewCell 内的 UICollectionView

    我注意到 iOS 在使用时非常卑鄙UICollectionView里面一个UITableViewCell 我想要实现的目标是拥有一组图像 UICollectionView方法 内UITableViewCell 我正在尝试模仿 Faceboo
  • IOS - 从应用程序商店安装旧版本的应用程序

    两天前我发布了应用程序的更新 从那时起 我从用户那里听说他们正在使用旧版本的应用程序 真正奇怪的是 用户在应用商店中看到了新的应用描述和屏幕截图 我已经弄清楚如何可靠地重现该问题 这是我可以自己解决的问题吗 我已经联系了苹果公司并在网上进行
  • 在 OS X 10.9 上找不到“ext/slist”文件

    我正在尝试让一些旧的第三方软件在 OS X 10 9 上编译 我通过调整 Makefile 中的设置设法摆脱了大多数编译问题 这些文件最初是为gcc大概是在 2005 年左右 但是 我目前不知道如何克服 C 源文件的这个错误 utility
  • 注入返回字符串 CDI 的生产者方法

    我想使用 CDI 将常量字符串消息注入 JSF Web 应用程序中的托管 bean 这里是生产者类 Named RequestScoped public class StringProducer Produces Named message
  • 如何保证 ThreadPoolExecutor 中的 FIFO 执行顺序

    我用这行代码创建一个 ThreadPoolExecutor private ExecutorService executor new ThreadPoolExecutor 5 10 120 TimeUnit SECONDS new Arra
  • 无法从 WCF 测试客户端访问 Net TCP 服务

    我正在尝试从 IIS 中运行两个 WCF 服务 一个是 Web 服务 另一个是 Net TCP 绑定服务 这是我的 Web config 的模拟 我已匿名化服务名称
  • 在执行 model.GetDeclaredSymbol 时如何获取 SynthesizedIntrinsicOperatorSymbol 而不是 SourceUserDefinedOperatorSymbol

    我在操作员解析方面遇到了麻烦 如所示这个问题 https stackoverflow com questions 69214209 issues with operator resolution in value types no refe
  • 如何在 JQuery 数据表中添加 Rowspan

    Im using Jquery datatables to construct a table My requirement is like below 这不是静态表 我们使用 json 数据渲染它 我在这里使用 aoColumns 动态渲
  • 在 Visual Studio 中的目录树中移动类后自动更改命名空间

    当用户向 Visual Studio 中的项目添加项目 如类或接口 时 IDE 会自动设置默认命名空间 每个程序集都有默认的命名空间 如果项目内有子文件夹 则目录结构会反映在命名空间中 以下结构 Project Directory1 Sub
  • 发送短信权限不起作用

    我想发送一条简单的消息 我已经