请求权限时应用程序崩溃

Posted

技术标签:

【中文标题】请求权限时应用程序崩溃【英文标题】:App crashes when requesting permission 【发布时间】:2017-07-05 08:12:47 【问题描述】:

在运行SendSMS(string 1, string 2); 方法之前,我正在使用此代码请求短信权限 但我的应用程序在权限请求发生之前崩溃。 缺少什么?

 final private int REQUEST_CODE = 101;

private void SendCreditSMS() 
    if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.SEND_SMS)
            != PackageManager.PERMISSION_GRANTED) 
        ActivityCompat.requestPermissions(MainActivity.this,
                new String[]Manifest.permission.SEND_SMS, REQUEST_CODE);
     else 
        SendSMS("181", "رصيد");
    

【问题讨论】:

遇到错误请放logcat 分享错误信息的日志猫 错误日志在哪里? 发布您的堆栈跟踪..错误日志 在清单文件中添加 SEND_SMS 权限 【参考方案1】:

尝试在您的 android 设备中转到应用程序管理器并选择您当前正在执行的应用程序。然后检查设备是否允许在您的设备中使用 send_sms 服务。

【讨论】:

【参考方案2】:

问题可能是由于您将请求权限的活动声明为没有历史记录。解决问题删除 android:noHistory="true" AndroidManifest 文件中关联活动的代码块中的行。要进行没有历史记录的活动,您可以使用其他呼叫,例如 finishAndRemoveTask()

【讨论】:

【参考方案3】:

试试这个,

    final private int REQUEST_CODE = 101;


    private void SendCreditSMS() 
      if (Build.VERSION.SDK_INT >= 23) 
            if (ActivityCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.SEND_SMS)
                    != PackageManager.PERMISSION_GRANTED) 
            
                ActivityCompat.requestPermissions(MainActivity.this,
                        new String[]android.Manifest.permission.SEND_SMS, REQUEST_CODE);
             else 
            
                SendSMS("181", "رصيد");
            
        
        else
            SendSMS("181", "رصيد");
        
    

【讨论】:

我不确定您在此处更改了什么? 你正在使用 Manifest.permission.SEND_SMS 。尝试使用 android.Manifest.permission.SEND_SMS

以上是关于请求权限时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

React Native:请求权限时崩溃

尝试使用权限时,使用 Adob​​e AIR SDK 24 构建的 iOS 应用程序崩溃

请求权限/Android Studio 时应用程序崩溃

程序启动时如何请求管理员权限?

由于缺少权限请求,应用程序崩溃 [重复]

RestKit iOS 应用程序应请求崩溃