2014-02-14 4 views
1

У меня гибкое мобильное приложение с ANE. Это АНХ имеет приемник вещания, которая начинается гибким мобильным приложением, когда он получает событие:Передача дополнительных приложений от приложения ANE to Flex

public class BroadcastEventHandler extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.d(Constants.TAG, "BROADCAST EVENT RECEIVED!");  
    try { 
     Intent i = new Intent(context, 
         Class.forName(context.getPackageName()+".AppEntry")); 

     i.addCategory(Intent.CATEGORY_LAUNCHER); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     i.putExtra("nameKey", "value"); 
     context.startActivity(i); 

    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
     Log.d(Constants.TAG, "Error on starting Intent: "+e.getMessage()); 
    } 
} 

На гибком приложении у меня есть следующий код:

protected function view1_preinitializeHandler(event:FlexEvent):void 
{ 
NativeApplication.nativeApplication.addEventListener(
    InvokeEvent.INVOKE, onInvoke); 
} 

private function onInvoke(event:InvokeEvent):void 
{ 
    trace("Arguments: " + event.arguments); 
} 

То, что я хочу сделать, это пройти Дополнительно от BroadcastReceiver до гибкого применения, когда она выполняется (как вы можете видеть, что я добавил объект Bundle в коде АНХ, но я ничего не получают в гибком приложении):

Трассировка:

Arguments: 

Знаете ли вы способ начать работу (в родной среде android) с некоторыми параметрами/дополнениями и получить их в приложении flex?

ответ

1

Наконец, я не мог сделать это через объект Bundle из собственного кода. Передача аргументов в приложение должна быть с тегом <data android:scheme="my-scheme"/> в манифесте. Однако

Одно из предостережений заключается в том, что вызов других приложений с помощью настраиваемых схем URL-адресов из приложений AIR невозможен. Модель безопасности AIR более ограничительна и ограничивает схемы: http :, https :, sms :, tel :, mailto :, file :, app :, app-storage :, vipaccess: и connectpro :. Вы можете найти больше об этом здесь и здесь.

Из этого большого урока:

http://www.riaspace.com/2011/08/defining-custom-url-schemes-for-your-air-mobile-applications/

До сих пор, что я сделал это реализовать класс с данными членами. Там я храню данные, которые я хочу обработать позже (это те же данные, которые я хотел передать напрямую через Bundle).

public class DataModel { 
    //data I will get after in the actionscript side of the code 
    private int notificationCode; 

    public int getNotificationCode(){ 
    return notificationCode; 
    } 

    public void setNotificationCode(int notificationCode){ 
    this.notificationCode=notificationCode; 
    } 
} 

Когда я получать уведомления в BroadcastReceiver я установить новое значение notificationCode, а потом начать деятельность (такую ​​же, как и раньше, но с добавлением вызова функции setNotificationCode).

Затем в Actionscript стороны, по методу onInvoke, я делаю следующий вызов:

//call native functions: 
//broadcastevent is the EventDispatcher that connects to the ANE 
notificationCode=broadcastevent.getCode(); 

switch(notificationCode) 
{ 
case Constants.DEFAULT_NOTIFICATION_CODE: 
{ 
    notificationMessage="THERE ARE NO NOTIFICATIONS"; 
    break; 
} 
case Constants.UPDATE_APP_CODE: 
{ 
    notificationMessage="UPDATE APP NOTIFICATION"; 
    break; 
} 
case Constants.SHOW_ALERT_CODE: 
{ 
    notificationMessage="SHOW ALERT NOTIFICATION"; 
    break; 
} 
default: 
     break; 

Это не то, что я точно искал, но я не нашел другого способа сделать что-то подобное, и это работает!

 Смежные вопросы

  • Нет связанных вопросов^_^