0

ボタンのクリックでSMSを含む画像ファイルを添付する必要があります。このコードを使用します

final Intent smsIntent = new Intent(android.content.Intent.ACTION_SEND);
smsIntent.putExtra("sms_body", "Hello World!"); 
smsIntent.putExtra("address", "0123456789");
smsIntent.putExtra(Intent.ACTION_ATTACH_DATA,screenshotUri);
smsIntent.setType("image/png");
startActivity(smsIntent);

しかし、これは、Facebook、電子メール、メッセージなどのアクションを選択するセレクターを示しています。しかし、添付ファイルでメッセージの意図を直接表示するチョーサービューは必要ありません。

4

1 に答える 1

2

インテントを使用して、探していることを実行することはできませんimplicit。これが、Androidシステムが暗黙のインテントを処理するように設計されているためです。インテントを特定のアプリケーションで処理する場合は、インテントを作成する必要がありますexplicit。つまり、インテントを処理する必要のあるコンポーネントを指定する必要があります。ただし、explicitインテントを使用して自分のような状況を処理する場合、特定のコンポーネント(つまり、アプリケーション)がターゲットデバイスに存在しないと、アプリが破損する可能性が高くなります。Androidは複数のOEMに採用されているため、それぞれがストックメッセージングアプリケーションを独自のものに置き換える傾向があります。したがって、一方のデバイスで機能しているように見えるものが、もう一方のデバイスでは機能しない場合があります。

目的を達成したい場合は、さまざまなデバイス上のメッセージングアプリケーションのリストを取得する必要があります(エミュレータ自体からストックAndroidアプリのコンポーネント名を見つけることができます)。そして、を使用しPackageManagerて、コンポーネントが存在するかどうかを確認します。explicitもしそうなら、あなたが受け取ることのないスタートとインテントIntentChooser。コンポーネントが存在しない場合は、implicitインテントを送信します。

インテントについて詳しくは、こちらをご覧ください。

現在のデバイスにアクティビティが存在するかどうかを判断しますか?-この投稿は、ターゲットコンポーネントが存在するかどうかを確認するのに役立ちます。

于 2012-10-23T07:07:44.760 に答える