为Android KitKat准备短信应用程序

时间:2013-10-22 16:58:18

标签: android sms android-version android-4.4-kitkat

与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,而且我找不到任何可以修复它的导入或声明。

有人可以帮忙吗?

3 个答案:

答案 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声称正在这样做。

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

相关问题