MooreHojer
unread,Nov 9, 2012, 10:29:21 AM11/9/12You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Hej NG
Jeg er ved at lave en lille app til Android som skal bruges til at fjernstyre vores alarm via SMS.
Appen består af en BroadcastReciever som lytter på indkomne sms'et (registreret via manifestet) og en activity som bruges til at sende kommandoer til alarmen (via sms).
Alt mht. til at sende og modtage sms virker som det skal.
Men jeg vil gerne have at når recieveren modtager en bestemt type sms så sender den en besked til min activity (hvis den er åben) så jeg kan vises besked for brugen i appen.
Jeg har via diverse sider på Google læst mig til at det skal gøre ved at lave min egen intent i min BroadcastReciever og så og så lytte på den i min activity, men den fungere ikke...
Jeg har i min BroadcastReciever defineret følgende 3 action/intent:
public static final String ALARM_STATUS_ON_FULL = "moorehojer.alarmcontrol.custom.intent.action.ALARM_STATUS_FULL_ON";
public static final String ALARM_STATUS_ON_PART = "moorehojer.alarmcontrol.custom.intent.action.ALARM_STATUS_PART_ON";
public static final String ALARM_STATUS_OFF = "moorehojer.alarmcontrol.custom.intent.action.ALARM_STATUS_OFF";
I min Activity har jeg følgende kode i forbindelse med at lytte på min Intent:
#################
private BroadcastReceiver receiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
Toast.makeText(myContext, "received:"+extras.getString("message"), Toast.LENGTH_LONG);
}
};
@Override
protected void onResume()
{
IntentFilter filter = new IntentFilter();
filter.addAction(SmsReader.ALARM_STATUS_ON_FULL);
filter.addAction(SmsReader.ALARM_STATUS_ON_PART);
filter.addAction(SmsReader.ALARM_STATUS_OFF);
filter.addAction(SmsReader.ACTION);
registerReceiver(receiver, filter);
this.makeToast(myContext, "listening");
super.onResume();
}
@Override
protected void onPause()
{
unregisterReceiver(receiver);
this.makeToast(myContext, "not listening");
super.onPause();
}
#################
I min BroadcastReciever som skal sende Intent har jeg følgende kode:
#################
Intent myIntent = new Intent();
myIntent.setAction(intentActionToCall);
this.makeToast(_context, "Intent created:\n"+intentActionToCall);
PackageManager pm = _context.getPackageManager();
List<ResolveInfo> list = pm.queryIntentActivities(myIntent, PackageManager.GET_ACTIVITIES);
this.makeToast(_context, list.size()+ " listeners for GET_ACTIVITIES");
/* Har også prøvet følgende /
list = pm.queryIntentActivities(myIntent, PackageManager.GET_INTENT_FILTERS);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_PROVIDERS);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_RECEIVERS);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_CONFIGURATIONS);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_DISABLED_COMPONENTS);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_GIDS);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_INSTRUMENTATION);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_META_DATA);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_PERMISSIONS);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_RESOLVED_FILTER);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_SERVICES);
list = pm.queryIntentActivities(myIntent, PackageManager.GET_SHARED_LIBRARY_FILES);
list = pm.queryIntentActivities(myIntent, PackageManager.MATCH_DEFAULT_ONLY);
/**/
if(list.size() > 0)
{
this.makeToast(_context, "Trying broadcast");
myIntent.putExtra("message", "Hallelujah");
_context.sendBroadcast(myIntent);
}
else
{
this.makeToast(_context, "Der er ikke nogen som lytter");
}
#################
'intentActionToCall' er en String og indeholder altid en af de 3 før nævnte muligheder.
Når jeg starter min App får jeg beskeden 'listening' og når jeg forlader den får jeg beskeden 'not listening' så den del af min activity bliver kaldt.
Når jeg kører min app og har fået besked 'listening' sender jeg den magiske sms, men får så beskeden 'Der er ikke nogen som lytter',
så et eller andet gør jeg forkert.
Er der nogen kloge hoveder herinde som kan fortælle mig hvad jeg har overset eller misforstået som gør at det ikke virker.
På Forhånd Tak!
--
MooreHojer