eng
eng

Reputation: 83

Set value in ControlExtension in Smartwatch

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?

Upvotes: 0

Views: 413

Answers (2)

Dan Cuc
Dan Cuc

Reputation: 76

"Since it is not activity, so it isn'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();

Retrieving string from shared preferences:

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

Upvotes: 0

mldeveloper
mldeveloper

Reputation: 2238

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.

Upvotes: 0

Related Questions