3

御時間ありがとうございます。ギャラリーを起動し、アクティビティ A で画像を選択して同じアクティビティ A に戻るアプリを実行しています。

単一のアクティビティ(マニフェストでランチャーとして定義されている)を持つプロジェクトから問題なく実行していますが、マニフェストでデフォルトとして定義されているアクティビティからプロジェクト全体から実行すると、正しく機能しません。

ギャラリーを開いて写真を選択するために使用するインテント:

public void openGallery(int req_code){

   Intent intent = new Intent();
   intent.setType("image/*");
   intent.setAction(Intent.ACTION_GET_CONTENT);
   startActivityForResult(Intent.createChooser(intent,"Select file to upload "), req_code);
}

データを取得する onActivityResult (ホール プロジェクトから実行したときに呼び出されることはありません):

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode == RESULT_OK) {
        Uri selectedImageUri = data.getData();
        if (requestCode == SELECT_FILE1)
        {
            selectedPath1 = getPath(selectedImageUri);
            System.out.println("selectedPath1 : " + selectedPath1);
        }
        if (requestCode == SELECT_FILE2)
        {
            selectedPath2 = getPath(selectedImageUri);
            System.out.println("selectedPath2 : " + selectedPath2);
        }
        tv.setText("Selected File paths : " + selectedPath1 + "," + selectedPath2);
    }
}

これは logcat ダンプです。

01-05 15:18:14.569: I/ActivityManager(59): Starting activity: Intent {   act=android.intent.action.UPLOADIMAGEDEMO cmp=com.example/.UploadImageDemo }
01-05 15:18:15.779: D/dalvikvm(2496): GC_EXTERNAL_ALLOC freed 2697 objects / 189152 bytes in 92ms
01-05 15:18:16.599: I/ActivityManager(59): Displayed activity com.example/.UploadImageDemo: 1953  ms (total 1953 ms)
01-05 15:18:21.899: D/dalvikvm(279): GC_EXPLICIT freed 871 objects / 134112 bytes in 217ms
01-05 15:18:26.620: I/ActivityManager(59): Starting activity: Intent {  act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity (has extras) }
01-05 15:18:28.250: I/ActivityManager(59): Starting activity: Intent {  act=android.intent.action.GET_CONTENT typ=image/* flg=0x3000000  cmp=com.android.gallery/com.android.camera.ImageGallery }
01-05 15:18:28.670: D/dalvikvm(279): GC_EXTERNAL_ALLOC freed 388 objects / 53352 bytes in 60ms
01-05 15:18:28.850: D/dalvikvm(279): GC_EXTERNAL_ALLOC freed 326 objects / 90664 bytes in 53ms
01-05 15:18:29.200: I/ActivityManager(59): Displayed activity    com.android.gallery/com.android.camera.ImageGallery: 873 ms (total 2345 ms)
01-05 15:18:29.420: D/dalvikvm(279): GC_EXTERNAL_ALLOC freed 725 objects / 106960 bytes in 140ms
01-05 15:18:30.430: W/InputManagerService(59): Starting input on non-focused client         com.android.internal.view.IInputMethodClient$Stub$Proxy@45020da8 (uid=10002 pid=279)
01-05 15:18:32.010: D/dalvikvm(112): GC_FOR_MALLOC freed 9994 objects / 476368 bytes in 149ms

最後に、エミュレーターの動作を最初にプロジェクト全体 (アプリを終了する) から記録し、2 番目に正常に動作する別のプロジェクトから記録しました。

http://www.youtube.com/watch?v=SntnyKiJQ1Q&feature=youtu.be

どうもありがとう!!!

4

3 に答える 3

0

次のコードで画像を選択するためにギャラリーを起動する作業コードがあります。

static final int GALLERY_RESULT = 1;

Intent j = new Intent(Intent.ACTION_PICK, Images.Media.EXTERNAL_CONTENT_URI);
j.setType("image/*");
startActivityForResult(j, GALLERY_RESULT);

結果を次のように処理します。

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
            case GALLERY_RESULT:
                Uri imgUri = intent.getData();
                imgView.setImageURI(imgUri);
            break;
        }
    }
}
于 2013-01-05T18:45:42.940 に答える
0

以下のように、マニフェスト ファイルから android:noHistory="true" 属性を削除します。

 <activity
        android:name=".YourActivity"
        android:noHistory="true"   <-------------------Remvoe this line
        android:theme="@style/AppTheme"/>

元のコードは次のようになります。

 <activity
        android:name=".YourActivity"
        android:theme="@style/AppTheme"/>

今、それは完璧に機能します。楽しみ。

于 2020-12-16T12:51:05.233 に答える