2

ウィジェットをクリックすると特定のアクティビティを起動する MinimalisticText の機能と同様の機能を持つアプリケーションを実装しようとしています。デバイス上の任意のアプリケーションを選択し、それらの中から任意のアクティビティを選択して、ボタンを押すだけで起動できるアプリを作成しています。ただし、マニフェストでアクティビティが宣言されていないため、ActivityNotFoundException を取得するという障害にぶつかりました。

私の調査のすべてが、これは不可能であることを示しています。それでも、Minimalistic Text のようなアプリケーションは、何らかの形で機能を実装できます。インテントを起動できるようにするために、アプリケーションに何が欠けていますか:

アクティビティを起動する方法に関連するコード スニペットは次のとおりです。

     private Intent getLaunchIntent(ActivityInfo ainfo) {
        Intent launch = new Intent(ctx, ainfo.getClass());
        launch.addCategory(Intent.CATEGORY_LAUNCHER);
        if(DBG) { Log.i(TAG, "Got launch intent:" + launch.toString()); }

        return launch;
     }

編集:解決しました!私がやっていることを行う方法を探している人は、ここを見てください:

自分の (インテント) から別のアプリケーションを開く

4

1 に答える 1

0

具体的には、マニフェストの観点から、アクティビティを持っているからといって、必ずしもその特定のアクティビティに実際に参加できるとは限らないことに注意することが重要です。これらの詳細は、MAINおよびのインテント フィルタによって定義されLauncher Intentます。一部のアクティビティには、このフィルタが含まれる場合と含まれない場合があります。

注意すべきことの 1 つは、アクティビティに がない場合、MAINそのパッケージの外部のインテントを介して直接そのアクティビティに移動できないことです。このアクティビティへのアクセスが拒否されることは、意図したとおりに機能しています。これは、設計されたスキームの外にある特定の画面に移動するのを防ぐためのセキュリティ対策であるためです。

詳細については、http: //developer.android.com/reference/android/content/Intentを参照してください。

また、ヒントとして、PackageManager を使用して、別のアプリケーションからアプリケーションを直接起動するという問題を解決できます (上記の範囲内)。

于 2012-07-16T15:30:14.850 に答える