1

PendingIntent を使用して自分のアプリから別のアプリを実行しようとしています。他のアプリの保留中のインテント値を取得してこれを行います(保留中のインテント値を文字列型で取得しました)

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);
        

しかし、それはうまくいきません。このエラーをログに表示します

2020-08-17 16:29:27.197 4503-4503/com.example.alimseolap1 E/AndroidRuntime: 致命的な例外: メイン プロセス: com.example.alimseolap1、PID: 4503 android.content.ActivityNotFoundException: インテントを処理するアクティビティが見つかりません{ 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(FragmentActivity.java:676) で androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat. java:234) androidx.fragment.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:791) で androidx.fragment.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.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(AllFragment.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 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) の .lang.reflect.Method.invoke(ネイティブ メソッド) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)

何が問題なのですか?

4

1 に答える 1

0

PendingIntentaをそのようなa に変換することはできませんUri。それ以外の:

PendingIntent pendingIntent = notification.contentIntent;
Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse(pendingIntent));
startActivity(intent1);

これをして:

PendingIntent pendingIntent = notification.contentIntent;
pendingIntent.send();

Intentこれにより、 でラップされた が起動しPendingIntentます。

于 2020-08-18T09:34:16.867 に答える