2017-04-07 2 views
2

In meiner Anwendung habe ich installiert MS-Word und PDF Dateien durch Speicherzugriff-Framework zu bekommen versuchen, die auf einigen Geräten gut funktioniert ich habe auf getestet, aber auf Samsung Note 4 API 6 ich erhalte einen FehlerAlle Apps mit dieser Aktion verknüpft wurden deaktiviert, gesperrt oder nicht Speicherzugangsrahmen

Alle Apps mit dieser Aktion verknüpft wurde deaktiviert, gesperrt oder nicht

installiert

Code:

warantyButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
       intent.addCategory(Intent.CATEGORY_OPENABLE); 
       intent.setType("application/pdf,application/msword"); 
       Intent i = Intent.createChooser(intent, "File"); 
       getActivity().startActivityForResult(i, FILE_REQ_CODE); 

      } 
     }); 
+1

'setType()' benötigt * einen * MIME-Typ, keine durch Kommas getrennte Liste von MIME-Typen. – CommonsWare

+0

Was ist, wenn ich mehrere MIME-Typen für einzelne Absicht hinzufügen möchte? –

+1

Auf API-Ebene 19+, [verwenden Sie EXTRA_MIME_TYPES] (https://developer.android.com/reference/android/content/Intent.html#EXTRA_MIME_TYPES). Ansonsten wird das, was Sie wollen, nicht unterstützt. – CommonsWare

Antwort

0

Da setType() Methode of Intent ein Argument als String d.h MIME type und seine Pflicht, weil auf der Grundlage des MIME type angefordert Android-System findet alle Aktionen, die unterstützt werden.

Wenn Sie beispielsweise einen beliebigen Inhaltstyp auswählen möchten, können Sie einfach setType("*/*") schreiben.

0

Ich bin mir nicht sicher, ob dies direkt mit Ihrem Problem zusammenhängt, aber es bezieht sich auf ein Problem, das ich persönlich mit diesem Fehler hatte, wenn Intents (falsch) verwendet wurde. Ich habe diesen Fehler erhalten, als ich versuchte, einen Intent global zu deklarieren. Zum Beispiel:

public class MyClass{ 

// Class Variables (BAD) 
private Intent someActivity = new Intent(this, SomeClass.class); 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     // Some Code 
    } 

} 

Dann fand ich, dass dieses Problem behoben wurde, als ich dies tat:

public class MyClass{ 

// Class Variables (Not Bad) 
private Intent someActivity; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     someActivity = new Intent(this, SomeClass.class); 
    } 

} 

Wenn dies nicht Sie in Ihrer spezifischen Situation helfen, ich hoffe, dass dies jemand hilft einigen Punkt.

Beim Debuggen, um den Grund für dieses Problem zu finden, konnte ich keine Notiz des Toast sehen, die den Text "Alle mit dieser Aktion verknüpften Apps wurden deaktiviert, blockiert oder nicht installiert." Es gab keine Spur davon, ein "Fehler" zu sein. Es scheint mir eher eine vom Betriebssystem behandelte Ausnahme für eine falsche Verwendung von Intents zu sein.

Verwandte Themen