android.content.ActivityNotFoundException: aucune activité trouvée pour gérer l'intention {act = android.intent.action.VIEW dat = PendingIntent {}
J'essaie d'exécuter une autre application à partir de mon application à l'aide de PendingIntent. J'obtiens la valeur d'intention en attente d'autres applications et je le fais (j'ai une valeur d'intention en attente dans le type String)
public class NotificationCrawlingService extends NotificationListenerService {
AppDatabase appDatabase;
WordDatabase wordDatabase;
NotificationDatabase notificationDatabase;
Context context;
PackageManager pm;
NotificationEntity ne;
AllFragment allFragment;
RecyclerViewAdapter rv;
List<NotiData> notiData;
NotificationEntity noti;
Notification notification;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
super.onNotificationPosted(sbn);
context = getApplicationContext();
appDatabase = AppDatabase.getAppDatabase(context);
wordDatabase = WordDatabase.getWordDatabase(context);
notificationDatabase = NotificationDatabase.getNotificationDatabase(context);
pm = context.getPackageManager();
notification = sbn.getNotification();
Bundle extras = notification.extras;
String pakage_name = sbn.getPackageName();
String app_name = findApp_name(pakage_name);
PendingIntent pendingIntent = notification.contentIntent;
Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse(pendingIntent));
startActivity(intent1);
Cependant, cela ne fonctionnera pas. Affiche cette erreur dans le journal
2020-08-17 16: 29: 27.197 4503-4503 / com.example.alimseolap1 E / AndroidRuntime: FATAL EXCEPTION: Main Process: com.example.alimseolap1, PID: 4503 android.content.ActivityNotFoundException: Aucune activité trouvée pour gérer l'intention {act = android.intent.action.VIEW dat = PendingIntent {78fb01: android.os.BinderProxy@b9c2b85}} sur android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:2018) sur android.app.Instrumentation.execStartActivity (Instrumentation .java: 1673) sur android.app.Activity.startActivityForResult (Activity.java:4689) sur androidx.fragment.app.FragmentActivity.startActivityForResult (FragmentActivity.java:676) sur androidx.core.app.ActivityCompat.startesActivity (Activity. java: 234) sur androidx.fragment.app.FragmentActivity.startActivityFromFragment (FragmentActivity.java:791) sur androidx.fragment.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:933) at androidx.fragment.app.Fragment.startActivity(Fragment.java:1185) at androidx.fragment.app.Fragment.startActivity(Fragment.java:1173) at com.example.alimseolap1.views.Fragment.AllFragment$2.onReceive (AllFragment.java:170) à androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts (LocalBroadcastManager.java:313) à androidx.localbroadcastmanager.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:121) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7050) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)
Quel pourrait être le problème?
Réponses
Vous ne pouvez pas convertir un PendingIntent
en un Uri
comme ça. Au lieu de:
PendingIntent pendingIntent = notification.contentIntent;
Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse(pendingIntent));
startActivity(intent1);
Tu fais cela:
PendingIntent pendingIntent = notification.contentIntent;
pendingIntent.send();
Cela lance le Intent
qui a été enveloppé dans le PendingIntent
.