2016-06-21 7 views
0

버튼 클릭시 알림을 생성하는 간단한 앱이 있습니다. 또한 내용 텍스트가 사용자에 의해 입력되도록 editText가 있습니다. 두 개의 다른 알림을 생성하는 두 개의 단추가 있습니다. 나의 요구 사항은 모든 버튼 클릭시 하나의 알림 만 생성되고 나머지는 알림 스택에 있어야한다는 것입니다. 알림 setGroup 속성을 사용하여 시도했지만 메서드가 작동하지 않는 것 같습니다. 추가 참조를 위해 아래 코드를 첨부했습니다.동일한 스택의 다른 그룹을 그룹화하십시오.

주요 활동 (Java 파일) : -

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.media.RingtoneManager; 
import android.net.Uri; 
import android.os.Build; 
import android.support.v4.app.TaskStackBuilder; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.app.NotificationCompat; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends AppCompatActivity { 
    private static final String GROUP_NOTIFICATIONS="group_notifications"; 
    NotificationCompat.Builder notification; 
    NotificationCompat.Builder notification1; 
    PendingIntent pIntent; 
    NotificationManager manager,manager1; 
    Intent resultIntent; 
    Button button,button1; 
    EditText editText; 
int a=0,b=100; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     editText= (EditText) findViewById(R.id.edittext); 
     button= (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startNotification(); 
      } 
     }); 
     button1= (Button) findViewById(R.id.button2); 
     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Notifications(); 
      } 
     }); 
    } 

    public void buttonClick(View view) 
    { 
     startNotification(); 
    } 

public void startNotification() 
{ 
//  Intent intent=new Intent(MainActivity.this,MyService.class); 
//  intent.putExtra("id",Integer.toString(a)); 
// startService(intent); 
// PendingIntent pendingIntent=PendingIntent.getService(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT); 


    String str=editText.getText().toString(); 


    notification=new NotificationCompat.Builder(this); 
    notification.setContentTitle("ABC"); 
    notification.setContentText(str); 
    notification.setTicker("New Message Arrived"); 
    notification.setSmallIcon(R.mipmap.ic_launcher); 
    notification.setGroup(GROUP_NOTIFICATIONS); 
    notification.setGroupSummary(true); 
    int num=0; 

// notification.setNumber(++num); 


    Uri uri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    notification.setSound(uri); 
    manager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    manager.notify(a,notification.build()); 
    a++; 
} 

    public void Notifications() 
    { 
     String str=editText.getText().toString(); 


     notification1=new NotificationCompat.Builder(MainActivity.this); 
     notification1.setContentTitle("ABC"); 
     notification1.setContentText(str); 
     notification1.setTicker("New Message Arrived"); 
     notification1.setSmallIcon(R.mipmap.ic_launcher); 
     notification1.setGroup(GROUP_NOTIFICATIONS); 
     notification1.setGroupSummary(true); 
     int num=0; 

//  notification1.setNumber(++num); 


     Uri uri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     notification1.setSound(uri); 
     manager1= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     manager1.notify(a,notification1.build()); 
     a++; 
    } 
} 

activity_main.xml

(XML 파일)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.pratik.stacked.MainActivity"> 


<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/edittext" 
    android:textColor="@color/colorPrimary" 
    android:textSize="20sp"/> 


    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Show Stacked Notification" 
     android:id="@+id/button" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Show Stacked notifiction 1" 
     android:id="@+id/button2" 
     android:layout_above="@+id/button" 
     android:layout_alignLeft="@+id/button" 
     android:layout_alignStart="@+id/button" 
     /> 
</RelativeLayout> 

의 AndroidManifest.xml (매니페스트 파일)

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

답변

0

문제는 증가 (a++) 알림 ID 재 : 당신은 당신이 업데이트 할 알림 ID로 통보 호출해야 기존의 통지를 업데이트하려면

manager1.notify(a,notification1.build()); 
a++; 

. 참조 할 수 있습니다 the documentation

Android> = 4.1 인 경우 expanded layouts을 사용할 수 있습니다. 이 경우 these guidelines 다음의 호환성을 보장 할 수 있습니다.

+0

질문은 그룹화 알림과 관련이 있습니까? –

+0

나는 이미 시도했다. 이 경우 알림을 그룹화하는 대신 현재 알림을 새 알림으로 바꿉니다. –

+0

Android> = 4.1에 대한 알림의 '펼쳐진 레이아웃'옵션을 지적했습니다. – antonio

관련 문제