在我的应用程序中,我试图通过Storage Access Framework获取 MS-Word 和 PDF 文件,这些文件在我测试过但在三星note 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);
}
});
答案 0 :(得分:1)
我不确定这是否与您的问题直接相关,但它与我个人在使用Intent(错误)时遇到此错误的问题有关。尝试全局声明Intent时收到此错误。例如:
public class MyClass{
// Class Variables (BAD)
private Intent someActivity = new Intent(this, SomeClass.class);
@Override
protected void onCreate(Bundle savedInstanceState){
// Some Code
}
}
然后,当我这样做时,我发现这个问题已经解决了:
public class MyClass{
// Class Variables (Not Bad)
private Intent someActivity;
@Override
protected void onCreate(Bundle savedInstanceState){
someActivity = new Intent(this, SomeClass.class);
}
}
如果这对您的具体情况没有帮助,我希望这会在某些时候帮助某人。
在调试以查找此问题背后的原因时,我看不到生成文本的Toast的任何注释“已禁用,阻止或未安装与此操作关联的所有应用程序”。没有迹象表明这是一个“错误”。在我看来,对于不正确使用Intents来说,操作系统处理的异常更多。
答案 1 :(得分:0)
由于Intent的setType()
方法将一个参数作为String,即MIME type
及其强制因素,因为基于MIME type
请求的android系统找到所有支持的动作。
例如,如果您想选择任何类型的内容,那么您只需编写setType("*/*")
。