应用程序错误:不支持该协议(cedemo://com.example.scheme.MainActivity)

时间:2014-11-27 05:46:21

标签: android cordova

Phonegap应用程序午餐问题

它是清单文件:

 <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data
                android:scheme="cedemo" android:host="com.example.shcema.MainActivity"/>
        </intent-filter>
    </activity>

这是我的主要活动:

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     
}}

但是当我点击&#34;启动应用程序&#34;链接然后我得到这个警报。 enter image description here

请帮助我任何人。

2 个答案:

答案 0 :(得分:0)

您错过了intent-filter中的CATEGORY_BROWSABLE

来自Android文档的

引用:

  

可以从浏览器安全调用的活动必须支持此类别。例如,如果用户正在查看网页或电子邮件并单击文本中的链接,则生成的Intent执行该链接将需要BROWSABLE类别,以便只有支持此类别的活动才会被视为可能的操作。通过支持这一类别,您承诺通过调用任何匹配的Intent,没有任何损害(无需用户干预)。

所以你的intent-filter必须像:

<intent-filter>
   <data android:scheme="cedemo" android:host="com.example.shcema.MainActivity"/>
   <action android:name="android.intent.action.VIEW"/>
   <category android:name="android.intent.category.BROWSABLE"/>
   <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

详情请见:Make a link in the Android browser start up my app?

答案 1 :(得分:0)

这不起作用。因为如何 Android可以知道我在这个自定义URI调用上启动了哪个应用程序?

首先,你必须让知识产权知道 自定义URI 存在,它可以接收此类调用,然后只要该自定义URI是由本机或混合应用程序调用,操作系统会自动将其转发到已注册的应用程序,即能够接收此类呼叫。

阅读此Android文档教程:

允许其他应用启动您的活动 http://developer.android.com/training/basics/intents/filters.html

以下是一个应用程序如何调用其他应用程序的示例。 Launch an application from another application on Android

这是自定义插件,可以更轻松地从 Cordova / phonegap 应用打开其他应用。

https://github.com/lampaa/org.apache.cordova.startapp