2017-04-07 8 views
2

にインストールされていない私はいくつかのデバイス上でうまく動作ストレージアクセスの枠組みを通じてMS-WordのPDFファイルを取得しようとしていています私は4 API 6が、私はエラーにこのアクションに関連付けられたすべてのアプリは、無効にされてブロックされた、または自分のアプリケーションではストレージアクセスの枠組み

すべてのアプリを取得しています時にはなくサムスンのノートでテストしてみた無効になっている、ブロックされた、または は

をインストールされていません

コード:

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()'はカンマで区切られたMIMEタイプのリストではなく、MIMEタイプです。 – CommonsWare

+0

単一の目的で複数のMIMEタイプを追加したい場合はどうすればいいですか? –

+1

APIレベル19+では、[EXTRA_MIME_TYPES'](https://developer.android.com/reference/android/content/Intent.html#EXTRA_MIME_TYPES)を使用します。そうでなければ、あなたが望むものはサポートされていません。 – CommonsWare

答えて

0

意向setType()方法以来文字列MIME type要求されたAndroidのシステムがサポートされているすべてのアクションを見つけるに基づいているためMIME typeとそのcompulsaryをすなわちとして一つの引数を取ります。

たとえば、任意のタイプのコンテンツを選択する場合は、単にsetType("*/*")と書くことができます。

0

これはあなたの問題に直接関係しているかどうかはわかりませんが、Intents(誤って)を使用しているときに個人的にこのエラーが発生した問題に関連しています。インテントをグローバルに宣言しようとすると、このエラーが発生しました。例:これはあなたの特定の状況のお手伝いをしていない場合、私は、これはいくつかの誰かを役に立てば幸い

public class MyClass{ 

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

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

} 

:次に

public class MyClass{ 

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

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

} 

、私はこれをしなかったとき、この問題が解決されたことがわかりましたポイント。

この問題の原因を見つけるためにデバッグすると、「この操作に関連付けられたすべてのアプリケーションが無効になっているか、ブロックされているか、インストールされていません」というテキストを生成したトーストのメモが表示されませんでした。これが「エラー」の痕跡はありませんでした。私には、インテントの誤った使用に対するOS処理の例外が多く見られます。