2016-04-06 1 views
0

Я пытаюсь начать с создания плагинов Android для приложения Tasker. Я начал с загрузки примера «toast» и прочитал документацию. Я все еще играю с примером, но когда я комментирую действие тоста и заменяю его кодом для создания диалогового окна оповещений (который я делал в других приложениях), плагин tasker всегда сбой, когда я пытаюсь его использовать в Tasker , Я использую Android Studio.Помощь FireReceiver в Android Tasker Plugin

Кто-нибудь знает, почему? Мой код приведен ниже:

public class FireReceiver extends BroadcastReceiver 
    { 

     /** 
     * @param context {@inheritDoc}. 
     * @param intent the incoming {@link com.twofortyfouram.locale.Intent#ACTION_FIRE_SETTING} Intent. This 
     *   should contain the {@link com.twofortyfouram.locale.Intent#EXTRA_BUNDLE} that was saved by 
     *   {@link EditActivity} and later broadcast by Locale. 
     */ 
     @Override 
     public void onReceive(final Context context, final Intent intent) 
     { 
    /* 
    * Always be strict on input parameters! A malicious third-party app could send a malformed Intent. 
    */ 

      if (!com.twofortyfouram.locale.Intent.ACTION_FIRE_SETTING.equals(intent.getAction())) 
      { 
       if (Constants.IS_LOGGABLE) 
       { 
        Log.e(Constants.LOG_TAG, 
          String.format(Locale.US, "Received unexpected Intent action %s", intent.getAction())); //$NON-NLS-1$ 
       } 
       return; 
      } 
    BundleScrubber.scrub(intent); 

    final Bundle bundle = intent.getBundleExtra(com.twofortyfouram.locale.Intent.EXTRA_BUNDLE); 
    BundleScrubber.scrub(bundle); 

    if (PluginBundleManager.isBundleValid(bundle)) 
    { 
     final String message = bundle.getString(PluginBundleManager.BUNDLE_EXTRA_STRING_MESSAGE); 
     //Toast.makeText(context, message, Toast.LENGTH_LONG).show(); 

     AlertDialog.Builder builder = new AlertDialog.Builder(context); 

     builder.setMessage("Yes, this worked!") 
       .setIcon(R.drawable.ic_launcher) 
       .setTitle(R.string.dialog_title); 

     builder.setPositiveButton(R.string.dialog_yes, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       // User clicked OK button 
       //Toast.makeText(context, "You clicked yes", Toast.LENGTH_LONG).show(); 
      } 
     }); 
     builder.setNegativeButton(R.string.dialog_no, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       // User cancelled the dialog 
       //Toast.makeText(getApplicationContext(), "You clicked no", Toast.LENGTH_LONG).show(); 
      } 
     }); 


     AlertDialog dialog = builder.create(); 
     dialog.show(); 

    } 

} 

ответ

0

Для всех, кто может столкнуться с этим, я решил проблему в конце. В принципе FireReceiver не способен отображать такие вещи, как предупреждения и т. Д., Поэтому вам необходимо использовать FireReceiver, чтобы по существу открыть другую активность, а затем обрабатывать предупреждение или что-то еще, что вы хотите отобразить.

Это работает для меня (я изменил имя пакета, но вы получили суть). NewActiviy - это то, что называется деятельностью, которую вы хотите открыть FireReciever. Затем он показывает вам мой код для передачи переменных вместе с ним, что довольно стандартно:

Intent openNext = new Intent(); 
     openNext.setClassName("com.yourcompany.yoursetting", "com.yourcompany.blahblah.receiver.NewActivity"); 

     openNext.putExtra("AlertTitle", message); 
     openNext.putExtra("AlertContentsString", AlertContents); 
      openNext.putExtra("BackColour", BackgroundC); 
      openNext.putExtra("TextColour", TitleC); 

      openNext.putStringArrayListExtra("ShowArray", arr); 

     openNext.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(openNext); 
Смежные вопросы