4

連絡先とつながるアプリを書きたいです。

シナリオ :

  1. 電話の連絡先に入る
  2. 連絡先を選択しますここに画像の説明を入力してください

  3. そして、私のアプリケーションのアイコンがQuickActionダイアログに表示されます。

  4. アプリのアイコンをクリックすると、アプリケーションは連絡先レコードのデータから始まります。

それを行うには、AndroidManifestに何を追加する必要がありますか?

4

2 に答える 2

4

アプリにこのインテントフィルターを追加して、すべての連絡先に表示されるようにします。

    <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名を取得できます

于 2012-09-12T08:48:29.573 に答える
4

正確にこの動作は、目的のタイプのコンテンツを処理できるユーザーデバイス上の唯一のアプリにアプリがある場合にのみ可能です。たとえば、「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 
    }
    }
    
于 2012-09-12T09:12:40.500 に答える