Reputation: 83
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
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
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