2016-02-29 4 views
2

У меня возникли проблемы с действиями Android Notification. Вот моя идея: Мой BroadcastReceiver просыпается в эфире, а затем создает уведомление. Это уведомление должно:Android Уведомления: Ожидание Намерения не работает

  • открытый MainActivity при касании его тела
  • доли сообщения, когда нажав на кнопку «Condividi»

мне удалось получить ACTION_SEND работаю при нажатии уведомления, но я не повезло с action ...

В Интернете не найдено ничего, только pendingIntents Открытые мероприятия.

Вот мой код:

public class AlarmReceiver extends BroadcastReceiver { 
static int notificationId = 0; 
@Override 
public void onReceive(Context context, Intent intent) { 
    Log.d("AlarmReceiver","ricevuto " + intent.getAction()); 
    Calendar calendar = Calendar.getInstance(); 
    String tipo = "sconosciuto"; 
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context); 
    mBuilder.setSmallIcon(R.drawable.ic_flag_black_24dp); 
    if(intent.getAction().equals(Constants.ALARM_ACTION_PALINDROM)){ 
     tipo="palindromo"; 
    } 
    if(intent.getAction().equals(Constants.ALARM_ACTION_DOUBLE)){ 
     tipo="simmetrico"; 
    } 

    mBuilder.setContentTitle("Orario " + tipo + "!"); 

    String currentTime = new SimpleDateFormat("HH:mm").format(new Date()); 
    mBuilder.setContentText(currentTime); 

    Intent shareIntent = new Intent(); 

    Intent notifIntent = new Intent(context,MainActivity.class); 
    shareIntent.setAction(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    shareIntent.putExtra(Intent.EXTRA_TEXT,"Sono le " + currentTime +", " + tipo + "\u2764"); 
    Intent shareIntentWithChooser = Intent.createChooser(shareIntent,"Send to"); 

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); 
    stackBuilder.addParentStack(MainActivity.class); 
    stackBuilder.addNextIntent(notifIntent); 

    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); 
    PendingIntent pendingIntentShare = PendingIntent.getBroadcast(context,notificationId,shareIntentWithChooser,PendingIntent.FLAG_UPDATE_CURRENT); 

    mBuilder.addAction(R.drawable.ic_send_black_18dp,"Condividi",pendingIntentShare); 

    mBuilder.setContentIntent(pendingIntent); 
    Notification notification = mBuilder.build(); 
    notification.flags = Notification.DEFAULT_LIGHTS|Notification.FLAG_AUTO_CANCEL; 

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(notificationId,notification); 
    notificationId++; 
} 

}

Заранее спасибо, я действительно не могу обернуть свой ум вокруг него!

+1

Для начала вы должны использовать 'getActivity' вместо' getBroadcast', так как вы хотите начать действие с действием share. Также нет необходимости предоставлять свою основную деятельность при ее создании, так как вы хотите «выбрать» ее позже. –

+0

Я понял первую часть вашего комментария, и она решила мою проблему (так ... добавьте ответ, чтобы я мог отметить вас как «проблема решена» :)) Но вторая часть мне непонятна. Что значит «обеспечить свою основную деятельность при ее создании»? Они два разных намерения, один для акций и один для активности ... – magicleon

+0

Спасибо. Я не был уверен, что это единственная проблема. Забудьте вторую часть, хотя я перепутал некоторые строки кода! :) –

ответ

2

Вы должны использовать getActivity() вместо getBroadcast() создать PendingIntent, так как вы хотите, чтобы начать Activity с ACTION_SHARE и не посылать в эфир.

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