連絡先とつながるアプリを書きたいです。
シナリオ :
- 電話の連絡先に入る
連絡先を選択します
そして、私のアプリケーションのアイコンがQuickActionダイアログに表示されます。
- アプリのアイコンをクリックすると、アプリケーションは連絡先レコードのデータから始まります。
それを行うには、AndroidManifestに何を追加する必要がありますか?
アプリにこのインテントフィルターを追加して、すべての連絡先に表示されるようにします。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/name" />
</intent-filter>
mimetypeを変更して、特定のデータを持つ連絡先のみがアクティビティを持つようにします。
たとえば、メールの連絡先に対してのみアクティビティを表示する場合は、mimetypeをに変更しvnd.android.cursor.item/email_v2
ます。DataColumnsのサブクラスからmimetype名を取得できます
正確にこの動作は、目的のタイプのコンテンツを処理できるユーザーデバイス上の唯一のアプリにアプリがある場合にのみ可能です。たとえば、「SMSを送信する」または「電話をかける」という種類のコンテンツを使用する場合、そのようなアクションを処理できるデバイス上のアプリはアプリだけではない可能性があります(ストックのダイヤラとSMSもあります)。アプリ)。
とにかく、ユーザーがそのクイックアクションをクリックしたときに表示されるアプリのリストにいつでもアプリケーションを追加できます。次のようになります。
これを行うには、次のものが必要です。
マニフェストファイルで、アプリケーションが「SMSの送信」などの目的のアクションを処理できることを指定します。これを行うには、アクティビティにインテントフィルタを追加する必要があります。その場合は、次のように呼び出されます。
<intent-filter>
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
</intent-filter>
ターゲットのアクティビティ追加コードで、目的のコンテンツタイプを処理します。ターゲットのActivityonCreate()
メソッド、またはonNewIntent()
Intentの呼び出しからのメソッドクエリデータ文字列パラメーター。一般的な考え方を示すためのサンプルコードを次に示します。
public class MyActivity extends Avtivity {
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String dataStr = intent.getDataString();
// do some processing with dataStr
}
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent callIntent = getIntent();
String dataStr = callIntent.getDataString();
// do some processing with dataStr
}
}