key*_*rdP 5 android launching-application android-intent
我想启动用户在我的应用程序中选择的应用程序.但是,我不确定我该怎么做.我试过这个:
Intent intent = new Intent();
intent.setAction(Contacts.Intents.SHOW_OR_CREATE_CONTACT);
startActivity(intent);
但这似乎抛出一个错误并强行关闭我的应用程序.我也尝试过添加:
<action android:name="Contacts.Intents.SHOW_OR_CREATE_CONTACT"/>
在AndroidManifest文件中,但无济于事.
看一下Logcat就会发现它是"IOexception - 没有这样的文件或目录".由此产生了几个问题.我阅读了Android文档并注意到不推荐使用Contact.Intents类.然而,它是继承者,ContactContracts针对API级别5,而我的目标是API级别3.这可能是问题吗?此外,我已将此应用程序硬编码到代码中.有没有办法检索用户选择的任何应用程序的意图,以便它们可以启动?
你需要额外的信息传递到意图告诉Android的东西你要显示或创建.否则Android不知道要启动什么活动(可能在你的情况下)抛出一个ActivityNotFoundException.
对于联系人,您使用generic,Intent.ACTION_INSERT_OR_EDIT然后使用单个联系人的MIME类型(Contacts.People.CONTENT_ITEM_TYPE).
例如:
Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(People.CONTENT_ITEM_TYPE);
intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890");
intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE, Contacts.PhonesColumns.TYPE_MOBILE);
这将打开联系人应用程序,提示您选择现有联系人以添加电话号码或创建新联系人.
您无需在清单中添加任何特殊内容即可启动外部活动.只有在您直接操作联系人时才ContentProvider需要向清单添加适当的CONTACT权限.
| 归档时间: | 
 | 
| 查看次数: | 14558 次 | 
| 最近记录: |