我有一个应用程序在电话上注册自定义URI的处理程序.我可以通过手机网页链接到"myapp:// act/launch"来启动应用程序.仅当我的应用程序安装在设备上时,此方法才有效.我想要做的是检测浏览器是否支持URI Scheme,然后如果找不到URI方案的处理程序,则提示我自己的消息"请下载应用程序等...".
有没有办法可以从Web浏览器中检测或找到电话上的URL方案处理程序列表?
在Android 4.3上测试过.我有两个应用程序,com.my.app.first和com.my.app.second.在我的活动中,我想阅读其他应用程序的首选项.我选择为我的两个应用使用相同的用户ID:
android:sharedUserId="com.my.app"
我总是这样加载我的偏好:
prefs = getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
现在,在我的第二个应用中,我执行以下操作:
try {
Context context = createPackageContext("com.my.app.first", Context.CONTEXT_IGNORE_SECURITY);
// context.getPackageName() does indeed return "com.my.app.first"
// Note: Context.MODE_WORLD_READABLE makes no difference here!
prefs = context.getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
}
Run Code Online (Sandbox Code Playgroud)
prefs.mFile错误地指向/data/data/com.my.app.second/shared_prefs/MyAppPreferences.xml.
显然,即使我使用了其他应用程序的上下文,对getSharedPreferences的调用也会返回当前应用程序的首选项.我究竟做错了什么?请帮忙!