在智能手表的ControlExtension中设置值

问题描述 投票:0回答:2

我对智能手表的接收价值有疑问。目前我按照这个问题

中的步骤进行操作

其实问问题的人已经有答案了,但由于我的评论声誉不够,所以我不能在他/她的问题中逐条评论地提问。

现在,根据回答问题的人 Eir 先生。我对他的回答有疑问:

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

他说我可以将值保存在首选项中,扩展程序从同一首选项中读取该值并将其显示在智能手表上。不幸的是,我不知道扩展程序如何读取它。我尝试将值放入 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);
    }

由于不是activity,所以无法通过getpreference来获取。有人知道怎么办吗

android sony sony-smartwatch
2个回答
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");

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.