android.content.ActivityNotFoundException:未找到 Activity 来处理 Intent { act=android.intent.action.VIEW dat=PendingIntent{ }
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=PendingIntent{ }
我正在尝试使用 PendingIntent 从我的应用程序执行另一个应用程序。我得到其他应用程序的未决 Intent 值并执行此操作(我得到了 String 类型的未决 Intent 值)
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);
然而它不会起作用。
在 Log
中显示此错误
2020-08-17 16:29:27.197 4503-4503/com.example.alimseolap1 E/AndroidRuntime:致命异常:main
进程:com.example.alimseolap1,PID:4503
android.content.ActivityNotFoundException:未找到 Activity 来处理 Intent { act=android.intent.action.VIEW dat=PendingIntent{78fb01: android.os.BinderProxy@b9c2b85} }
在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2018)
在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1673)
在 android.app.Activity.startActivityForResult(Activity.java:4689)
在 androidx.fragment.app.FragmentActivity.startActivityForResult(片段Activity.java:676)
在 androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234)
在 androidx.fragment.app.FragmentActivity.startActivityFromFragment(片段Activity.java:791)
在 androidx.fragment.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(片段Activity.java:933)
在 androidx.fragment.app.Fragment.startActivity(Fragment.java:1185)
在 androidx.fragment.app.Fragment.startActivity(Fragment.java:1173)
在 com.example.alimseolap1.views.Fragment.AllFragment$2.onReceive(全部Fragment.java:170)
在 androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:313)
在 androidx.localbroadcastmanager.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:121)
在 android.os.Handler.dispatchMessage(Handler.java:106)
在 android.os.Looper.loop(Looper.java:214)
在 android.app.ActivityThread.main(ActivityThread.java:7050)
在 java.lang.reflect.Method.invoke(本机方法)
在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
可能是什么问题?
您不能像这样将 PendingIntent
转换为 Uri
。而不是:
PendingIntent pendingIntent = notification.contentIntent;
Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse(pendingIntent));
startActivity(intent1);
你这样做:
PendingIntent pendingIntent = notification.contentIntent;
pendingIntent.send();
这将启动包装在 PendingIntent
中的 Intent
。
我正在尝试使用 PendingIntent 从我的应用程序执行另一个应用程序。我得到其他应用程序的未决 Intent 值并执行此操作(我得到了 String 类型的未决 Intent 值)
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);
然而它不会起作用。 在 Log
中显示此错误2020-08-17 16:29:27.197 4503-4503/com.example.alimseolap1 E/AndroidRuntime:致命异常:main 进程:com.example.alimseolap1,PID:4503 android.content.ActivityNotFoundException:未找到 Activity 来处理 Intent { act=android.intent.action.VIEW dat=PendingIntent{78fb01: android.os.BinderProxy@b9c2b85} } 在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2018) 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1673) 在 android.app.Activity.startActivityForResult(Activity.java:4689) 在 androidx.fragment.app.FragmentActivity.startActivityForResult(片段Activity.java:676) 在 androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234) 在 androidx.fragment.app.FragmentActivity.startActivityFromFragment(片段Activity.java:791) 在 androidx.fragment.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(片段Activity.java:933) 在 androidx.fragment.app.Fragment.startActivity(Fragment.java:1185) 在 androidx.fragment.app.Fragment.startActivity(Fragment.java:1173) 在 com.example.alimseolap1.views.Fragment.AllFragment$2.onReceive(全部Fragment.java:170) 在 androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:313) 在 androidx.localbroadcastmanager.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:121) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7050) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
可能是什么问题?
您不能像这样将 PendingIntent
转换为 Uri
。而不是:
PendingIntent pendingIntent = notification.contentIntent;
Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse(pendingIntent));
startActivity(intent1);
你这样做:
PendingIntent pendingIntent = notification.contentIntent;
pendingIntent.send();
这将启动包装在 PendingIntent
中的 Intent
。