为Android KitKat准备短信应用程序

为Android KitKat准备短信应用程序,android,sms,android-version,android-4.4-kitkat,Android,Sms,Android Version,Android 4.4 Kitkat,与安卓开发者最近发布的帖子一致,我试图将我的应用程序准备到新的安卓版本,但他们建议创建一个对话框,让用户将应用程序设置为处理短信的默认应用程序时遇到了一个问题: Android开发者帖子 } 代码本身非常简单,但是我无法访问Telephony.Sms.getDefaultSmsPackage,因为它说电话无法解析,而且我找不到任何导入或声明可以解决这个问题 有人能帮忙吗?android.provider.Telephony根本不存在(从API 18-4.3开始) 这个类将被添加到4.4中(大概是

与安卓开发者最近发布的帖子一致,我试图将我的应用程序准备到新的安卓版本,但他们建议创建一个对话框,让用户将应用程序设置为处理短信的默认应用程序时遇到了一个问题:

Android开发者帖子

}

代码本身非常简单,但是我无法访问Telephony.Sms.getDefaultSmsPackage,因为它说电话无法解析,而且我找不到任何导入或声明可以解决这个问题


有人能帮忙吗?

android.provider.Telephony
根本不存在(从API 18-4.3开始)

这个类将被添加到4.4中(大概是API 19),而这篇博客文章强调了新API发布后应该做的更改,所以到时候您不会感到惊讶

从文章末尾开始:

为了帮助您进行更改,我们将很快为Android 4.4提供必要的SDK组件,允许您在Android 4.4上编译和测试更改


不要忘记,您应该在API版本检查中包装此代码,这样您就不会在没有此类的旧版本中遇到问题。

此更改将中断所有SMS阻止应用程序。 “请注意,从Android 4.4开始,您的应用程序中止SMS_RECEIVED_动作广播的任何尝试都将被忽略,因此所有感兴趣的应用程序都有机会接收。”

你认为有办法解决这个问题吗


也许至少在根目录上?

显然,根目录访问存在问题。最新版本的Cerberus应用程序声称正在这样做


现在,我要是知道他们是怎么做的就好了:(

是的,你是对的!我只是错过了文章的最后几行。=\!无论如何,谢谢!这似乎是一个评论,而不是一个独立的答案。这是对我答案的评论。我在Cerberus应用程序/网站上没有看到任何与此相关的内容,所以如果你能提供一个很棒的链接,我最近看到的是一些评论t更改了Play Store显示的部分。唉,它们似乎没有任何公共更改日志,因此此评论早就消失了。我记得的是,他们在Kit Kat下对根设备的SMS处理进行了一些更改。在试图找到一些相关参考时,我无意中发现了它们所在的讨论努力让它工作。
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);
    }
}