2017-02-25 11 views
-1

私は、インテントに電話をかけてギャラリーから画像を取り出すためのアクティビティを持っています。 イメージを選択した直後にホーム画面に戻り、ギャラリーのインテントが自分のアクティビティに戻ろうとしていますが、これは私が思っていないものです。アプリケーションは、OnStartActivityResultを呼び出した後に戻りません。

public void startScan(View view) { 

    Intent intent = new  Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONT ENT_URI); 
    startActivityForResult(intent, 99); 
    } 

Mainfest:

<application 
tools:replace="android:icon,android:theme" 
android:allowBackup="true" 
android:icon="@drawable/icon" 
android:label="@string/app_name" 
android:supportsRtl="true" 
android:persistent="true" 
android:configChanges="orientation|screenSize" 
android:screenOrientation="portrait" 
android:theme="@style/AppTheme"> 
<activity 
    android:name=".MainActivity" 
    android:label="מערכת דיווחים" 
    android:theme="@style/AppTheme.NoActionBar" 
     android:windowSoftInputMode="adjustResize|stateAlwaysVisible|stateVisible|adjust Pan"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity android:name=".LoginActivity" 
      android:windowSoftInputMode="adjustResize|stateAlwaysVisible|stateVisible|adjust Pan" > 
</activity> 
</application> 

OnActivityResult:

protected void onActivityResult(int requestCode, int resultCode, Intent  data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 99 && resultCode == Activity.RESULT_OK) { 
     Uri uri = data.getExtras().getParcelable(ScanConstants.SCANNED_RESULT); 
     Bitmap bitmap = null; 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),  uri); 
      getContentResolver().delete(uri, null, null); 
      pushbutton.setText(bitmap.getByteCount()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

あなたの他のアクティビティのポストコードは、そこにデータを設定して渡す方法です。 – Ak9637

+0

他のアクティビティでは、どこかでコールします...インテントi =新しいインテント(); setResult(Activity.RESULT_OK、i); またはsetResult(Activity.RESULT_CANCEL、resultIntent)を送信できます。 –

+0

http://www.javatpoint.com/android-startactivityforresult-example –

答えて

0

はあなたのonActivityResultにこのコードを試してみてください。

Uri originalUri = data.getData(); 
       final int takeFlags = data.getFlags() 
         & (Intent.FLAG_GRANT_READ_URI_PERMISSION |  Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
getContentResolver().takePersistableUriPermission(originalUri, takeFlags); 
String selectedImagePath = getPath(context,originalUri); 

以下はある、getPath(文脈、ウリ)

です
public static String getPath(final Context context, final Uri uri) { 

    final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; 

    // DocumentProvider 
    if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { 
     // ExternalStorageProvider 
     if (isExternalStorageDocument(uri)) { 
      final String docId = DocumentsContract.getDocumentId(uri); 
      final String[] split = docId.split(":"); 
      final String type = split[0]; 

      if ("primary".equalsIgnoreCase(type)) { 
       return Environment.getExternalStorageDirectory() + "/" + split[1]; 
      } 

      // TODO handle non-primary volumes 
     } 
     // DownloadsProvider 
     else if (isDownloadsDocument(uri)) { 

      final String id = DocumentsContract.getDocumentId(uri); 
      final Uri contentUri = ContentUris.withAppendedId(
        Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); 

      return getDataColumn(context, contentUri, null, null); 
     } 
     // MediaProvider 
     else if (isMediaDocument(uri)) { 
      final String docId = DocumentsContract.getDocumentId(uri); 
      final String[] split = docId.split(":"); 
      final String type = split[0]; 

      Uri contentUri = null; 
      if ("image".equals(type)) { 
       contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
      } else if ("video".equals(type)) { 
       contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; 
      } else if ("audio".equals(type)) { 
       contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
      } 

      final String selection = "_id=?"; 
      final String[] selectionArgs = new String[] { 
        split[1] 
      }; 

      return getDataColumn(context, contentUri, selection, selectionArgs); 
     } 
    } 
    // MediaStore (and general) 
    else if ("content".equalsIgnoreCase(uri.getScheme())) { 

     // Return the remote address 
     if (isGooglePhotosUri(uri)) 
      return uri.getLastPathSegment(); 

     return getDataColumn(context, uri, null, null); 
    } 
    // File 
    else if ("file".equalsIgnoreCase(uri.getScheme())) { 
     return uri.getPath(); 
    } 

    return null; 
} 

ご希望の場合はお手数ですが、

+0

onActivityResultの問題はまったく呼び出されません – user3592561

関連する問題