设置默认短信应用

说明

设置默认短信应用

val intent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName)
startActivity(intent)

如上代码搜索一下应该很容易看到。在初次了解时,我也是以为把自己APP的包名传进去,就可以将自己的APP设置为默认短信应用了。然而发现在弹出的选择框中找不到自己的应用。

窃以为是不支持呢!

后来才醒悟,上述代码的弹框列表是展示的具有短信处理功能的应用,而我的应用并没有处理短信的功能,(其实不管有没有实际的短信处理逻辑)最主要的是并未告诉系统我有短信处理的能力(假装我有短信处理的能力)。那么如何告诉系统呢?答案是:配置应用清单文件咯。

代码步骤

  1. 必须注册 BROADCAST_SMS Receiver

    
        
            
            
        
    
    
  2. 必须注册 SEND_RESPOND_VIA_MESSAGE Service

    
        
            
            
            
            
            
            
        
    
    
  3. 必须注册 收发短信 的Activity

    
        
            
            
            
            
            
            
            
            
        
    
    
  4. 必须注册 BROADCAST_WAP_PUSH 的Receiver

    
        
            
            
        
     
    

如上配置之后(直接贴到清单文件中,即使报红也没事),自己的APP就可以进入默认短信应用的可选项列表中了。

当然这样也仅仅只是达到这个目的了,简单说就是通过上述配置欺骗了系统,让系统以为你有短信的各种处理能力(实际并没有)。

PS: 即使把默认短信应用修改为了你自己应用,并不会影响系统原有应用的功能发挥。即并不是完全接管取缔了系统默认应用。

你可能感兴趣的:(设置默认短信应用)