概述
我有一个应用程序,需要临时访问设备的短信.在KitKat及更高版本中,此访问仅授予默认的SMS应用程序,因此我使用:
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getPackageName());
startActivity(intent);
这会打开一个对话框,询问用户是否让我的应用成为默认的短信应用.到现在为止还挺好.问题是,一旦我的应用程序完成其操作,我必须再次询问用户,是否要将其以前的应用程序恢复为其默认SMS应用程序.
我想要一种避免第二个对话框的方法,可能是让我的应用程序告诉Android操作系统它不再希望成为默认的SMS应用程序,以便之前的应用程序可以自动重新接管.我知道Android支持这个,因为如果我卸载我的应用程序,它是默认的SMS应用程序,Android将自动恢复到前一个,不需要用户输入.有没有办法在没有卸载的情况下复制放弃控制的这种行为?
解决方法:
要有资格成为默认消息传递应用程序,您的应用必须在清单中注册某些活动组件.禁用其中任何一个都会使您的应用不合格,系统应自动恢复默认值.我们可以使用PackageManager #setComponentEnabledSetting()方法来禁用清单注册的组件.
例如,如果已注册SMS_DELIVER操作的Receiver名为SmsReceiver:
getPackageManager()
.setComponentEnabledSetting(new ComponentName(this, SmsReceiver.class),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
显然,在您的应用程序再次设置为默认值之前,您需要重新启用该组件,您可以通过使用PackageManager.COMPONENT_ENABLED_STATE_ENABLED作为第二个参数调用上述方法来执行此操作.
标签:android,android-intent,sms,android-4-4-kitkat,telephony
来源: https://codeday.me/bug/20190623/1266679.html
最后
以上就是忐忑白昼为你收集整理的android还原短信应用,android – 自动恢复到以前的默认短信应用程序的全部内容,希望文章能够帮你解决android还原短信应用,android – 自动恢复到以前的默认短信应用程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复