Question

I have question for receive value in smartwatch. Currently I follow this steps from this question

Actually,the person who ask it has the answer how to do that, but since my reputation for comment is not enough, so I can't ask question by comment in his/her question.

Right now, based on Mr. Eir,the person who answered the question. I have problem in what he answered:

You also want to pass some arguments to your Extension, i.e. the String you mention. This can be a bit tricky; normally, you would pass that String in the Intent itself, as an extra, but here, that is not available. You need to save that information (the String) on a location that your Extension can access as well. So, if your Activity and your Extension are part of the same app, that location can be the app preferences: the Activity saves the value in the preferences, and the Extension reads it from the same preference and displays it on the SmartWatch or whatever.

He said that I can save the value in preference and the Extension reads it from the same preference and displays it on the SmartWatch. Unfortunately, I don't know how the extension reads it. I have try to put the value in samplepreferenceactivity:

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

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

  }

I don't know how to put the value in controlextension class, If it possible to put, I want to you use for changing "Hello watch". Below you can find controlextension class:

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);
    }

Since it is not activity, so it is n't possible to take by using getpreference. Anybody knows how?

Was it helpful?

Solution

"Since it is not activity, so it is n't possible to take by using getpreference. Anybody knows how?"

You can access the preferences through context: context.getApplicationContext().getSharedPreferences(...);

A few pointers about using shared preferences:

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

Putting string in shared preferences:

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

Retreaving string from shared preferences:

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

OTHER TIPS

If you are just trying to pass a string between an Activity in your project and your ControlExtension you don't need to use SharedPreferences. The easiest way is to just register a dynamic BroadcastReceiver in your extension and broadcast an Intent from the Activity passing your string inside the Intent.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top