gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:10 39 4
gpt4 key购买 nike

我正在努力恢复 KITKAT 上的 SMS。引用这个article我已经添加了将我的应用程序设置为 SMS 默认应用程序所需的内容。在 list 文件中添加所有必需的东西后,我编写了以下代码:

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);
}

enter image description here

上面的代码显示了这个对话框,但我无法从这个 Activity/对话框中得到结果,无论是用户点击是还是否,因为我想添加监听器或获取任何代码来表示用户点击了这些按钮。谢谢。

最佳答案

一种方法是使用 startActivityForResult() 触发 Intent,然后检查 onActivityResult() 方法中的 resultCode .请注意,我已将示例中的代码更改为在 Activity 的上下文中运行。

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);

关于java - Android - 从更改默认短信应用程序对话框中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27009971/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com