0

ギャラリーアプリを作成しました。画像や写真を開きますが、システムはギャラリー アプリとして取得しません。ギャラリーアプリとして設定するのを手伝ってくれる人はいますか? ありがとうございました!

4

2 に答える 2

2

マニフェストを更新します。これにより、他のアプリがコンテンツを受け取るようになります

<activity android:name=".ui.MyActivity" >
<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.SEND_MULTIPLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>

着信コンテンツを処理します。

void onCreate (Bundle savedInstanceState) {

// Get intent, action and MIME type
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();

if (Intent.ACTION_SEND.equals(action) && type != null) {
    if ("text/plain".equals(type)) {
        handleSendText(intent); // Handle text being sent
    } else if (type.startsWith("image/")) {
        handleSendImage(intent); // Handle single image being sent
    }
} else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null)     {
    if (type.startsWith("image/")) {
        handleSendMultipleImages(intent); 
// Handle multiple images   being sent
    }
} else {
    // Handle other intents, such as being started from the home screen
}

}

void handleSendText(Intent intent) {
String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
if (sharedText != null) {
    // Update UI to reflect text being shared
}
}

void handleSendImage(Intent intent) {
Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (imageUri != null) {
    // Update UI to reflect image being shared
}
}

void handleSendMultipleImages(Intent intent) {
ArrayList<Uri> imageUris =             intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
if (imageUris != null) {
    // Update UI to reflect multiple images being shared
}
}

公式ドキュメント: https://developer.android.com/training/sharing/receive.html

于 2017-01-01T08:30:06.617 に答える
0

インテントとインテント フィルターを使用する必要があります

上記のリンクで、「暗黙のインテントの受け取り」について読む必要があります。

アプリが受信できる暗黙的インテントをアドバタイズするには、マニフェスト ファイル内の要素を使用して、アプリ コンポーネントごとに 1 つ以上のインテント フィルターを宣言します。各インテント フィルタは、インテントのアクション、データ、およびカテゴリに基づいて、受け入れるインテントのタイプを指定します。インテントがインテント フィルターの 1 つを通過できる場合にのみ、システムは暗黙的なインテントをアプリ コンポーネントに配信します。

<activity android:name="ShareActivity">
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
</activity>

^ 上記のコード (ドキュメントから抜粋) は、他のアクティビティが SEND インテントを使用しているときにアプリを開く方法を示しています。

アクションと mimeType を変更して、必要な結果を取得します (写真を送信しますか?、写真を表示しますか?など)。

于 2017-01-01T08:02:26.257 に答える