Android - 从更改默认SMS应用程序对话框中获取结果

 山间农夫的家 发布于 2022-12-10 17:21

我正在努力恢复KITKAT上的短信.参考这篇文章,我添加了将我的应用程序设置为SMS的默认应用程序所需的内容.在清单文件中添加所有必需的东西后,我编写了以下代码:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
{
    mDefaultSmsApp = Telephony.Sms.getDefaultSmsPackage(mContext);
    Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
    intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, mContext.getPackageName());
    mContext.startActivity(intent);
}

在此输入图像描述

上面的代码显示了这个对话框,但我无法从用户点击Yes或No的活动/对话框中获得结果,因为我想添加监听器或获取任何代表用户点击这些按钮的代码.谢谢.

1 个回答
  • 要做到这一点的方法之一是火的意图startActivityForResult(),然后检查resultCodeonActivityResult()方法.请注意,我已将示例中的代码更改为在Activity的Context中运行.

    private static final int DEF_SMS_REQ = 0;
    private String mDefaultSmsApp;
    
    ...
    
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
        {
            mDefaultSmsApp = Telephony.Sms.getDefaultSmsPackage(this);
    
            if (!getPackageName().equals(mDefaultSmsApp))
            {
                Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
                intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getPackageName());
                startActivityForResult(intent, DEF_SMS_REQ);
            }
        }       
    
    ...
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        switch (requestCode)
        {
            case DEF_SMS_REQ:           
                boolean isDefault = resultCode == Activity.RESULT_OK;
                ...
        }
    }
    

    如下面的评论所述,显然检查结果代码并非100%可靠.更安全的检查是简单地将您的应用程序包名称与当前默认值进行比较onActivityResult().根本没有必要检查结果代码,例如评论中显示的答案.

    String currentDefault = Sms.getDefaultSmsPackage(this);
    boolean isDefault = getPackageName().equals(currentDefault);
    

    2022-12-11 03:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有