Ran*_*ndy 4 android android-intent
我需要为特定的mime类型设置默认应用程序.我知道如何清除默认值,但我需要在没有实际打开应用程序的情况下提示用户.
PackageManager p = mContext.getPackageManager();
ComponentName cN = new ComponentName(mContext, FakeDownloadActivity.class);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent selector = new Intent(Intent.ACTION_DEFAULT);
selector.addCategory(Intent.CATEGORY_DEFAULT);
selector.setType(mimeType);
mContext.startActivity(selector);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)
上面的代码启动活动而不是仅选择默认活动.它可以启用虚假活动,然后禁用它.这会导致"选择默认应用程序"对话框在下次调用时显示.我只想选择默认活动.
你在寻找的是一个ACTION_PICK_ACTIVITY意图.
首先,您创建一个定义应该有资格选择的应用程序的intent,例如:
Intent mainIntent = new Intent(Intent.ACTION_DEFAULT, null);
mainIntent.addCategory(Intent.CATEGORY_DEFAULT);
Run Code Online (Sandbox Code Playgroud)
然后,您创建 ACTION_PICK_ACTIVITY意图,并作为Extra,传递您之前创建的主要意图
Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
Run Code Online (Sandbox Code Playgroud)
现在,您只需使用此意图启动结果活动:
startActivityForResult(pickIntent, 0);
Run Code Online (Sandbox Code Playgroud)
并且将创建一个对话框,其中已使用的可以选择应用程序,但是单击时,活动不会启动,而是将保留在您的活动中,并且onActivityResult将使用结果调用该函数.所以你需要创建该功能:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//In data, you have all the information about the selected application
if (data != null) {
//You can launch the application that we just picked with startActivity(data);
//or explore the variable to get all the information than you want
}
}
Run Code Online (Sandbox Code Playgroud)
看看Intent课程.在那里,您可以获得有关包名称和将要启动的类的信息.
从现在开始,您需要将该包和类设置为intent的默认值,或者您需要的任何其他内容.不好的一面是,您只能为了自己的内部目的保存该信息,例如,决定下次用户执行某些操作时要启动的应用程序.您不能做的是修改系统设置以设置给定intent的默认活动.实际上,包管理器有addPreferredActivity方法,应该这样做,但是自API级别8以来它已被弃用,原因如下:
这是受保护的API,不应该对第三方应用程序可用.平台负责分配首选活动,但不能直接修改.将新的首选活动映射添加到系统.当Context.startActivity()找到多个匹配活动并且也匹配给定的过滤器时,这将用于自动选择给定的活动组件.
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |