【问题标题】:preparing SMS app for Android KitKat为 Android KitKat 准备 SMS 应用程序
【发布时间】:2013-10-22 16:58:18
【问题描述】:

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

有人可以帮忙吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    从文末开始:

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

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

    【讨论】:

    • 是的,你是对的!我只是错过了阅读帖子的最后几行.. =\!无论如何谢谢!
    【解决方案2】:

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

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

    也许至少在 Root 上?

    【讨论】:

      【解决方案3】:

      显然有root访问权限。最新版本的 Cerberus 应用声称可以这样做。

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

      【讨论】:

      • 这似乎是一个评论,而不是一个独立的答案。
      • 这是对我的回答的评论。我在 Cerberus 应用程序/网站上没有看到任何与此相关的内容,所以如果你能提供一个很棒的链接?
      • 我在 Play 商店显示的最近更改部分看到了一些善意的评论。唉,他们似乎没有任何形式的公开变更日志,所以这条评论早就消失了。我记得他们做了一些改变,在 Kit Kat 下修复了根设备的 SMS 处理。在试图找到对此的一些参考时,我确实偶然发现了他们试图使其发挥作用的讨论。 groups.google.com/forum/#!topic/cerberus-support-forum/…
      猜你喜欢
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多