-2

J'essaie d'ouvrir une activité à partir de l'activité du lanceur lorsqu'une notification générée par FCM est cliquée. La fonction startActivity ne fait rien même lorsque l'instruction log écrite ci-dessus est exécutée. Voici quelques fichiers pertinents/fonctions, s'il vous plaît dire pourquoi le ConversationDetailActivity ne démarre pas:startActivity() ne fait rien même lorsque l'intention est spécifiée correctement

La fonction qui démarre une autre activité de LoginActivity

void handleNotificationClick() 
{ 
    if (getIntent().getExtras() != null) 
    { 
     for (String key : getIntent().getExtras().keySet()) 
     { 
      Object value = getIntent().getExtras().get(key); 
      System.out.println("----- pushNotif Key: " + key + " Value: " + value); 
     } 

     Intent intent; 

     if(getIntent().getStringExtra(Master.KEY_PUSH_NOTIFICATION_CATEGORY).equals(Master.KEY_PUSH_NOTIFICATION_CONVERSATION)) 
     { 
      intent = new Intent(LoginActivity.this, ConversationDetailActivity.class); 
     } 
     else 
     { 
      intent = new Intent(LoginActivity.this, ApprovalDetailActivity.class); 
      if(getIntent().getStringExtra(Master.KEY_PUSH_NOTIFICATION_APPROVAL_TYPE).equals("I")) 
       intent.putExtra(Master.KEY_WHICH_APPROVAL, Master.KEY_VERIFICATIONS); 
      else if(getIntent().getStringExtra(Master.KEY_PUSH_NOTIFICATION_APPROVAL_TYPE).equals("A")) 
       intent.putExtra(Master.KEY_WHICH_APPROVAL, Master.KEY_APPROVALS); 
      else 
       intent.putExtra(Master.KEY_WHICH_APPROVAL, Master.KEY_COMPLETED); 

      intent.putExtra(Master.KEY_IS_FROM_CONVERSATION, false); 
     } 
     intent.putExtra(Master.KEY_PUSH_NOTIFICATION_POST_ID , getIntent().getStringExtra(Master.KEY_PUSH_NOTIFICATION_POST_ID)); 
     intent.putExtra(Master.KEY_IS_FROM_PUSH_NOTIFICATION, true); 
     intent.putExtra(Master.KEY_POSITION, 0); 

     System.out.println("----- starting new activity from handleNotificationClick"); 
     LoginActivity.this.startActivity(intent); 
     LoginActivity.this.finish(); 
    } 
} 

La fonction sendNotification à partir de laquelle la notification est générée

private void sendNotification(String messageBody) 
    { 
     Intent intent; 
     System.out.println("----message body: " + messageBody); 
     if(notificationBundle.getCategory().equalsIgnoreCase(Master.KEY_PUSH_NOTIFICATION_CONVERSATION)) 
     { 
      intent = new Intent(this, ConversationDetailActivity.class); 
     } 
     else 
     { 
      intent = new Intent(this, ApprovalDetailActivity.class); 
      if(notificationBundle.getApprovalType().equals("I")) 
       intent.putExtra(Master.KEY_WHICH_APPROVAL, Master.KEY_VERIFICATIONS); 
      else if(notificationBundle.getApprovalType().equals("A")) 
       intent.putExtra(Master.KEY_WHICH_APPROVAL, Master.KEY_APPROVALS); 
      else 
       intent.putExtra(Master.KEY_WHICH_APPROVAL, Master.KEY_COMPLETED); 

      intent.putExtra(Master.KEY_IS_FROM_CONVERSATION, false); 
     } 

     intent.putExtra(Master.KEY_PUSH_NOTIFICATION_POST_ID , notificationBundle.getPostID()); 
     intent.putExtra(Master.KEY_IS_FROM_PUSH_NOTIFICATION, true); 
     intent.putExtra(Master.KEY_POSITION, 0); 

     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 
       PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT); 

     Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.mnet_icon) 
       .setContentTitle(getString(R.string.app_name)) 
       .setContentText(messageBody) 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     int random = (int) ((new Date().getTime()/1000L) % Integer.MAX_VALUE); 
     notificationManager.notify(random, notificationBuilder.build()); 
    } 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.vishesh.test"> 

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

    <application 
     android:name=".MnetApplication" 
     android:allowBackup="true" 
     android:icon="@drawable/mnet_icon" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".activities.LoginActivity" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/app_name" 
      android:launchMode="singleTask" 
      android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activities.MainActivity" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/title_activity_main" 
      android:launchMode="singleTask" 
      android:theme="@style/AppTheme.NoActionBar" /> 

     <activity 
      android:name=".activities.ConversationDetailActivity" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/title_activity_conversation_detail" 
      android:parentActivityName=".activities.MainActivity" 
      android:theme="@style/AppTheme.NoActionBar" 
      android:launchMode="singleTask" 
      android:windowSoftInputMode="stateHidden|adjustResize"> 
      <intent-filter> 
       <action android:name=".activities.ConversationDetailActivity" /> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:scheme="http" /> 
      </intent-filter> 

      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="mnet.mediaware.com.m_net.activities.MainActivity" /> 
     </activity> 
     <activity 
      android:name=".activities.ApprovalDetailActivity" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/title_activity_approval_detail" 
      android:parentActivityName=".activities.MainActivity" 
      android:theme="@style/AppTheme.NoActionBar" 
      android:windowSoftInputMode="stateHidden|adjustResize"> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="mnet.mediaware.com.m_net.activities.MainActivity" /> 
     </activity> 
     <activity 
      android:name=".activities.NewConversationActivity" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/title_activity_new_conversation" 
      android:parentActivityName=".activities.MainActivity" 
      android:theme="@style/AppTheme.NoActionBar" 
      android:windowSoftInputMode="stateHidden|adjustResize"> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="mnet.mediaware.com.m_net.activities.MainActivity" /> 
     </activity> 
     <activity 
      android:name=".activities.NotificationActivity" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/title_activity_notification" 
      android:parentActivityName=".activities.MainActivity" 
      android:theme="@style/AppTheme.NoActionBar" 
      android:windowSoftInputMode="stateHidden|adjustResize"> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="mnet.mediaware.com.m_net.activities.MainActivity" /> 
     </activity> 
     <activity 
      android:name=".activities.ProfileActivity" 
      android:label="@string/title_activity_profile" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:parentActivityName=".activities.MainActivity" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="mnet.mediaware.com.m_net.activities.MainActivity" /> 
     </activity> 

     <service 
      android:name=".utils.firebase.MyFirebaseMessagingService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
      </intent-filter> 
     </service> 

     <service 
      android:name=".utils.firebase.MyFirebaseInstanceIDService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
      </intent-filter> 
     </service> 

    </application> 

</manifest> 

Répondre

0

Essayez d'ajouter android: exporté = "true" à l'activité dans AndroidManifest.xml

+0

Aucun changement. Le problème persiste toujours. – backslashN

0

Première finition activité de connexion, puis appelez l'activité commence.

LoginActivity.this.finish(); 
LoginActivity.this.startActivity(intent); 
+0

Pas de changement. Le problème persiste toujours. – backslashN

0

Dans votre manifeste, définissez votre classe que vous voulez ouvrir comme ce

<activity 
     android:name=".activities.ApprovalDetailActivity" 
     android:exported="true" 
     android:screenOrientation="portrait" 
     android:theme="@style/MyMaterialTheme" 
     android:windowSoftInputMode="stateHidden"> 

     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 


    </activity> 
+0

Pas de changement. Cela n'a pas aidé. – backslashN

+0

Essayez d'ajouter des impressions et de voir jusqu'à où le code s'exécute. –