我对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。谁知道怎么做?
答案 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”);