0

これが私が達成しようとしていることです:3つのボタンを備えたウィジェット:1。フォルダを表示します2.アイテムを追加します3.アイテムを追加し、カメラを起動してアイテムに写真を添付し​​ます。

インテントとエクストラを使用して2&3を達成したいと思っていました。ブール値のエクストラ「写真」を追加するだけで、3番目のボタンがクリックされた場合に当てはまります。コードは次のとおりです。

Intent intent = new Intent(Intent.ACTION_INSERT);
        intent.setData(Uri.parse("content://"
                + NoteProviderMetaData.AUTHORITY + "/folders/"
                + folderId));
intent.putExtra("photo", false);
intent.putExtra("kind", "NO PHOTO");
intent.setAction(Intent.ACTION_INSERT);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
views.setOnClickPendingIntent(R.id.imageButton2, pendingIntent);

Intent intentFolder = new Intent(Intent.ACTION_VIEW);
        intentFolder.setData(Uri.parse("content://"
                + NoteProviderMetaData.AUTHORITY + "/folders/"
                + folderId + "/notes"));
PendingIntent pendingIntentFolder = PendingIntent.getActivity(this, 0, intentFolder, 0);
Intent intentPhoto = new Intent(Intent.ACTION_INSERT);
intentPhoto.setData(Uri.parse("content://"
        + NoteProviderMetaData.AUTHORITY + "/folders/"
                + folderId));
intentPhoto.putExtra("photo", true);
intentPhoto.putExtra("kind", "PHOTO");
intentPhoto.setAction(Intent.ACTION_INSERT);
PendingIntent pendingIntentPhoto = PendingIntent.getActivity(this, 0, intentPhoto, 0);
views.setOnClickPendingIntent(R.id.imageButton3, pendingIntentPhoto);

pendingIntentPhoto問題は、エクストラを作成した直後にpendingIntent新しい値が上書きされ、アクティビティで true常に値を取得することです。インテントは機能するので、別のインテントアクションを使用するだけでも問題ないと思いますが、このPendingIntentがどのように機能するかを理解したいと思います。PHOTOpendingFolder

4

1 に答える 1

1

このメソッドの文書化されていない機能を使用して、これを達成できました。

public static PendingIntent getActivity (Context context, int requestCode, Intent intent, int flags)

ドキュメントから: requestCode Private request code for the sender (currently not used).

どうやらこのコードは現在何らかの形で使用されています。このメソッド呼び出しに異なる requestCode を指定することPendingIntentsで、同じウィジェットに対して異なるものを作成することができました。

于 2013-01-17T18:42:44.023 に答える