2017-09-22 1 views
5

Ist es möglich, ein Album in Android Gallery ab SDK V24 zu öffnen?Android: Öffnen Sie Galeriealbum mit Ziel sdk 24

Ich habe eine Anwendung, die ein Bild manipuliert und speichert es unter bestimmten Albumnamen auf dem externen Speicher. Ich hätte gerne eine Möglichkeit von der Applikation aus, dieses Album direkt in der Android Gallery zu öffnen. Ist das möglich?

ich einfach eine einzelne Datei öffnen kann, aber das ganze Album nicht:

Meine AndroidManifest.xml

... 
<provider 
    android:name="android.support.v4.content.FileProvider" 
    android:authorities="${applicationId}.provider" 
    android:exported="false" 
    android:grantUriPermissions="true"> 
    <meta-data 
     android:name="android.support.FILE_PROVIDER_PATHS" 
     android:resource="@xml/provider_paths"/> 
</provider> 
... 

Meine provider_paths.xml

<?xml version="1.0" encoding="utf-8"?> 
<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
    <external-path name="external_files" path="."/> 
</paths> 

Meine Handhabung eine bestimmte Datei der Eröffnung:

Intent i = new Intent(); 
i.setAction(Intent.ACTION_VIEW); 
File myFile = new File(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), MY_ALBUM_NAME), MY_FILE_NAME); 
Uri myUri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", myFile); 
i.setDataAndType(myUri, "image/*"); 
i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
startActivity(i); 

Öffnen einer bestimmten Datei funktioniert gut. Ich kann es aber nicht schaffen, das ganze Album zu öffnen. Ist das möglich?

Antwort

1

Sie können Bilder in Ihrem Album scannen und sie in einer Aktivität anzeigen, die Sie erstellt haben, anstatt die Galerie in Ihrem Album zu öffnen.

public class MainActivity extends AppCompatActivity implements MediaScannerConnection.MediaScannerConnectionClient { 
public String[] allFiles; 
private String SCAN_PATH ; 
private static final String FILE_TYPE="image/*"; 

private MediaScannerConnection conn; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.content_main); 

    File folder = Environment 
      .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES + "/YourAlbumName"); 
    allFiles = folder.list(); 
    for(int i=0;i<allFiles.length;i++) 
    { 
     Log.d("all file path"+i, allFiles[i]+allFiles.length); 
    } 


    SCAN_PATH=Environment.getExternalStorageDirectory().toString()+"/Photo/"+allFiles[0]; 
    System.out.println(" SCAN_PATH " +SCAN_PATH); 

    Log.d("SCAN PATH", "Scan Path " + SCAN_PATH); 
    Button scanBtn = (Button)findViewById(R.id.button); 
    scanBtn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      startScan(); 
     }}); 
} 
private void startScan() 
{ 
    Log.d("Connected","success"+conn); 
    if(conn!=null) 
    { 
     conn.disconnect(); 
    } 
    conn = new MediaScannerConnection(this,this); 
    conn.connect(); 
} 
@Override 
public void onMediaScannerConnected() { 
    Log.d("onMediaScannerConnected","success"+conn); 
    conn.scanFile(SCAN_PATH, FILE_TYPE); 
} 
@Override 
public void onScanCompleted(String path, Uri uri) { 
    try { 
     Log.d("onScanCompleted",uri + "success"+conn); 
     System.out.println("URI " + uri); 
     if (uri != null) 
     { 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(uri); 
      startActivity(intent); 
     } 
    } finally 
    { 
     conn.disconnect(); 
     conn = null; 
    } 
} 

}

+0

Hey, danke für die Antwort. Ja, das war meine Lösung für den Fall, dass ich das Album in der Galerie nicht öffnen konnte. Aber ich suche nach einer klaren Antwort - kann ich das Album in der Standard-Galerie-Anwendung öffnen? –

Verwandte Themen