0

私の Eclipse ワークスペースには、メイン アプリケーション A があり、完全に機能する別のアプリケーション B があります。

Intent を使用して、ボタンをクリックするとアプリケーション B を開くようにアプリケーション A を構成しましたが、動作します。

問題は次のとおりです。

アプリケーション BI では、EXTRA_MESSAGE を受信する必要があります。ただし、アプリケーション B がアプリケーション A を認識しないため、情報にアクセスできません。

String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE_DESC);

「MainActivity」は変数に解決できないと述べています。

*補遺: アプリケーション A でクラス参照を開くと編集不能な表示になるため、アプリケーション B の実際のコードに取り組んでいます。

アプリケーション B のマニフェストを変更し、B のビルド パスにアプリケーション A を追加する必要があるようです...これは面倒で、再利用可能ではないようです。

助けてくれてありがとう

4

2 に答える 2

1

興味深い質問です。

Intent.getStringExtra() の引数は、拡張データに関連付けられたキーを含む文字列です。そのデータを取得するには、元のアプリまたはアクティビティの名前ではなく、キーを知る必要があります。開発者がアプリのパッケージ名をキー値の先頭に追加することがありますが、キーがパッケージ名だけであったり、送信アクティビティの名前や送信アプリであったりすることはほとんどありません。

拡張データの格納方法がわかっている場合は、キー値を見つけて、それを使用してデータを取得します。インテントを公開するアプリケーションの場合、これを見つけることができるはずです。

そうしないと、設計上、拡張データを取得できません。これは、許可されていないアプリがインテントからデータを読み取らないようにするためのセキュリティ機能です。

于 2013-09-18T23:20:17.757 に答える
0

アプリ A と B の間で共有ライブラリを使用してみませんか。project.properties ファイルで、この共有ライブラリのパスを指定できます。使用してandroid.library.reference

ただし、プロセス間通信の場合は、AIDL を使用することをお勧めします。

于 2013-09-18T23:18:04.783 に答える