2

与 Android 开发人员最近的帖子一致http://android-developers.blogspot.pt/2013/10/getting-your-sms-apps-ready-for-kitkat.html,我正在尝试准备我的应用程序新的android版本,但遇到了他们建议创建一个对话框让用户将应用程序设置为默认应用程序来处理短信的部分问题:

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 无法解析,而且我找不到任何可以解决此问题的导入或声明。

有人可以帮忙吗?

4

3 回答 3

2

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

此类将在 4.4(可能是 API 19)中添加,并且该博客文章强调了在新 API 发布后您应该进行的更改,因此您在时机成熟时不会感到惊讶。

从帖子的末尾:

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

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

于 2013-10-22T17:11:22.463 回答
2

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

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

也许至少在 Root 上?

于 2013-10-22T21:40:43.610 回答
-2

显然有root访问权限。最新版本的 Cerberus 应用程序声称正在这样做。

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

于 2014-01-20T17:30:07.460 回答