与Android开发者http://android-developers.blogspot.pt/2013/10/getting-your-sms-apps-ready-for-kitkat.html最近的帖子一致,我试图将我的应用程序准备到新的Android版本,但是他们建议创建一个对话框以让用户设置的部分遇到问题app作为处理SMS的默认应用程序:
Android开发者帖子
public class ComposeSmsActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
final String myPackageName = getPackageName();
if (!Telephony.Sms.getDefaultSmsPackage(this).equals(myPackageName)) {
// App is not default.
// Show the "not currently set as the default SMS app" interface
View viewGroup = findViewById(R.id.not_default_app);
viewGroup.setVisibility(View.VISIBLE);
// Set up a button that allows the user to change the default SMS app
Button button = (Button) findViewById(R.id.change_default_app);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent =
new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
myPackageName);
startActivity(intent);
}
});
} else {
// App is the default.
// Hide the "not currently set as the default SMS app" interface
View viewGroup = findViewById(R.id.not_default_app);
viewGroup.setVisibility(View.GONE);
}
}
}
代码本身非常简单,但我无法访问Telephony.Sms.getDefaultSmsPackage,因为它说无法解析Telephony,而且我找不到任何可以修复它的导入或声明。
有人可以帮忙吗?
答案 0 :(得分:2)
android.provider.Telephony
根本就不存在(从API 18 - 4.3开始)。
此类将在4.4中添加(可能是API 19),该博客文章突出显示了新API发布后您应该进行的更改,以便在时机成熟时不会感到惊讶。
从帖子的末尾开始:
为了帮助您进行更改,我们很快将为Android 4.4提供必要的SDK组件,以便您在Android 4.4上编译和测试更改。
不要忘记您应该将此代码包装在API版本检查中,这样您就不会遇到没有此类的旧版本的问题。
答案 1 :(得分:2)
此更改将破坏所有短信拦截应用。 “请注意 - 从Android 4.4开始 - 您的应用程序尝试中止SMS_RECEIVED_ACTION广播将被忽略,因此所有感兴趣的应用都有机会接收它。”
你认为有办法解决这个问题吗?!
也许至少在Root上?
答案 2 :(得分:-2)
显然有root访问权限。最新版本的Cerberus app声称正在这样做。
现在,只要我知道他们是怎么做的:(