2016-07-07 29 views
0

Ich möchte jede Datei in meiner App mit Absicht Auswahl öffnen - leider Vorschläge von chooser sind ... seltsam. Nach Auswahl der png Datei wird nur eine Option angezeigt - Drive PDF Viewer. Aber wenn ich versuche, dieselbe Datei mit dem Standard-Datei-Explorer zu öffnen, wird empfohlen, Galery oder Photos zu verwenden.Android Intent chooser - falsche Propositionen

String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext.toLowerCase()); 
Log.i(TAG, mime); // <------------ image/png 
Intent intent= new Intent(Intent.ACTION_VIEW); 
intent.setType(mime); 
intent.setData(Uri.fromFile(file)); // <----- png file 
Intent chooser = Intent.createChooser(intent, "Choose an application to open with:"); 
chooser.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(chooser); 

Was ist hier falsch?

+0

Wenn Sie es ändern in: intent.setType ("image/*"); Es klappt? – motis10

+0

Nr. Gleiche Geschichte ... – Lau

Antwort

2

dieses Versuchen mit setDataAndType:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(file), "image/*"); 
Intent chooser = Intent.createChooser(intent, "Choose an application to open with:"); 
context.startActivity(chooser); 

Bitte beachten Sie die Javadoc des method setType (String type) in der Klasse Intent:
...
Diese Methode löscht automatisch alle Daten, die zuvor gesetzt wurden (zum Beispiel by setData (Uri)).
...

0

Try this,

String[] mimetypes = {"image/*"}; 
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 
intent.addCategory(Intent.CATEGORY_OPENABLE); 
intent.setType("*/*"); 
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes); 

Dies kann hilft Ihnen

+0

Dies öffnet Aktivität mit der Nachricht: 'Alle Apps, die mit dieser Aktion verbunden sind, wurden ausgeschaltet, blockiert, oder sind nicht installiert '... aber ich bin mir ziemlich sicher, dass GALERY App installiert ist arbeitet in Standard-Datei-Explorer) – Lau

+0

Sie können eine Lösung/Idee hier http://codetheory.in/android-intent-filters/ –

0

try betritt und diese insted Mime

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent,"Select Image"),REQUEST_TAKE_GALLERY_IMAGE); 
+0

Es ändert sich nichts ... – Lau

+0

aktualisiert es. versuche es mit deinem zu ersetzen – Prashant

0

ich die gleiche Nachricht für mich zu Aufspringen gesehen habe, wenn ich den folgenden Code verwendet:

public class MainActivity extends AppCompatActivity { 
intent = new Intent(MainActivity.this, SecondActivity.class); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.coordinator_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    TextView textView = (TextView) findViewById(R.id.gotoA); 
    textView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      intent.putExtra("show 1",true); 
      startActivity(intent); 
     } 
    }); 

    TextView textView1 = (TextView) findViewById(R.id.gotoB); 
    textView1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      intent.putExtra("show 2",true); 
      startActivity(intent); 
     } 
    }); 
} 

so brachte ich die Absicht contructor, wo ich diese Absicht Beispiel verwenden.

public class MainActivity extends AppCompatActivity { 
Intent intent; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.coordinator_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    TextView textView = (TextView) findViewById(R.id.gotoA); 
    textView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      intent = new Intent(MainActivity.this, SecondActivity.class); 
      intent.putExtra("show 1",true); 
      startActivity(intent); 
     } 
    }); 

    TextView textView1 = (TextView) findViewById(R.id.gotoB); 
    textView1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      intent = new Intent(MainActivity.this, SecondActivity.class); 
      intent.putExtra("show 2",true); 
      startActivity(intent); 
     } 
    }); 
} 

für mich hat dies das Problem gelöst.