我对智能手表的接收价值有疑问。目前我按照这个问题
中的步骤进行操作其实问问题的人已经有答案了,但由于我的评论声誉不够,所以我不能在他/她的问题中逐条评论地提问。
现在,根据回答问题的人 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来获取。有人知道怎么办吗
“因为它不是活动,所以不可能通过使用 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");
如果您只是尝试在项目中的 Activity 和 ControlExtension 之间传递字符串,则无需使用 SharedPreferences。最简单的方法是在您的扩展中注册一个动态 BroadcastReceiver 并从 Activity 中广播一个 Intent,并在 Intent 中传递您的字符串。