在Smartwatch中的ControlExtension中设置值

时间:2013-09-27 06:25:55

标签: android sony sony-smartwatch

我对smartwatch的接收价值有疑问。目前,我从此question

开始执行此步骤

实际上,问它的人有答案如何做到这一点,但由于我的评论声誉不够,所以我不能在他/她的问题中通过评论提问。

现在,根据Eir先生,回答这个问题的人。我回答的问题是:

  

您还想将一些参数传递给您的扩展,即   你提到的字符串。这可能有点棘手;通常,你会通过   Intent本身的String,作为额外的,但在这里,不是   可用。您需要将该信息(字符串)保存在a上   您的分机也可以访问的位置。所以,如果你的活动   并且您的扩展程序是同一个应用程序的一部分,该位置可以是   应用偏好:活动将值保存在首选项中,并且   扩展从相同的首选项中读取它并将其显示在   SmartWatch或其他什么。

他说我可以优先保存该值,并且Extension会从同一首选项中读取它并将其显示在SmartWatch上。不幸的是,我不知道扩展如何读取它。我试着将值放在samplepreferenceactivity中:

@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            SharedPreferences settings = getSharedPreferences("SHARED_PREFS_FILE",0);
            String message = settings.getString("send", "message");

  }

我不知道如何将值放在controlextension类中,如果可以放,我想用你来改变"Hello watch"。您可以在下面找到controlextension类:

public class HelloWatchExtension extends ControlExtension{
   ...
  public HelloWatchExtension(Context context, String hostAppPackageName) {
        super(context, hostAppPackageName);

        width = getSupportedControlWidth(context);
        height = getSupportedControlHeight(context);

        layout = new RelativeLayout(context);
        textView = new TextView(context);
        textView.setText("Hello watch!");
        textView.setTextSize(9);
        textView.setGravity(Gravity.CENTER);
        textView.setTextColor(Color.WHITE);
        textView.layout(0, 0, width, height);
        layout.addView(textView);
    }

由于它不是活动,因此无法使用getpreference。谁知道怎么做?

2 个答案:

答案 0 :(得分:0)

如果您只是尝试在项目中的Activity和ControlExtension之间传递字符串,则不需要使用SharedPreferences。最简单的方法是在你的扩展中注册一个动态的BroadcastReceiver,并从你在Intent中传递你的字符串的Activity中广播一个Intent。

答案 1 :(得分:0)

“因为它不是活动,所以使用getpreference是不可能的。有人知道怎么做?”

您可以通过上下文访问首选项: context.getApplicationContext()getSharedPreferences(...);

关于使用共享偏好的几点建议:

SharedPreferences preferences = _context。 getApplicationContext()。getSharedPreferences(“com.example.AppName”,Context.MODE_MULTI_PROCESS);

将字符串放在共享首选项中:

_preferences.edit()。putString(“OBJECT”,“object_name”)。commit();

从共享首选项中重新保存字符串:

_preferences.getString(“OBJECT”,“default_name”);