如何将我的应用添加到"打开"对话?

时间:2015-05-05 03:01:49

标签: java android file open-with

我需要将我的Android应用程序放在SQLite文件的Open With对话框中。

就像安装新的网络浏览器一样,它会显示在html文件的Open With对话框中。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

出现在'打开方式'对话框,您的Android应用必须在其清单中声明它处理特定的意图,然后在意图中指定文件的mime类型。例如:

<intent-filter >
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="application/x-sqlite" />
</intent-filter>

请注意,SQLite的mime类型可能无法识别,因为我不认为这是一个标准。您可能希望使用application / octet-stream,然后在您自己的代码中,仔细检查所提供的文件是否实际上是一个有效的SQLite文件(无论如何都应该这样做)。

您可以找到有关标记here和一般意图过滤器的更多信息here

答案 1 :(得分:2)

我在俄罗斯StackOverflow中找到的答案: https://ru.stackoverflow.com/a/420927/180697

<activity name="com.your.activity">
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="file" />
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.sqlite" />
</intent-filter>

这是您需要添加到Activity类的内容:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    final Intent intent = getIntent();  
    final String action = intent.getAction();

    if(Intent.ACTION_VIEW.equals(action)){
        Uri uri = intent.getData();
        new File(uri.getPath()); //дальше делаем все, что надо с файлом 
    } else {
        Log.d(TAG, "intent was something else: "+action);
    }
}

所以我只需要了解在活动中写什么!)) 谢谢!