我正在创建一个简单的cordova应用程序。我所有的资产都是本地的。我为like button
添加了一个facebook端点。但是,通过cordova build android && cordova run android
运行并没有显示“相似”按钮。
使用cordova serve
和localhost可以工作,我可以看到fb-like button
。
我是否必须构建一个签名版本apk才能获取远程js/css文件?
请在下面找到相关信息。
另外,之前我从远程加载google-material
css资产和字体,但由于互联网不工作,我只是在本地复制文件。但是我不想对fb的sdk做同样的事情。
在谷歌上搜索,我发现了android.permission.INTERNET
,但它已经出现在我的AndroidManifest.xml
中了。我增加了几个权限。
我是在我的本地安卓设备上运行的,我已经在它上启用了usb-debugging
和developer mode
。当应用程序启动时,它只是加载,不请求我的许可。我还没有用apk版本进行测试,因为这需要签名。
情况会是这样吗?怎么才能强迫它申请许可呢?
我在Ubuntu16.04与科多瓦安卓版本的6.2.3
。我正在android 5.1.1 device
上测试。
└─ $ ▶ cat platforms/platforms.json
{
"android": "6.2.3"
}ashish @ 7567 ~/work/be_autonomous/cordova (master)
ashish @ 7567 ~/work/be_autonomous/cordova (master)
└─ $ ▶ cordova --version
7.0.1
ashish @ 7567 ~/work/be_autonomous/cordova (master)
└─ $ ▶ cat config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.beautonomous.first" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>BeAutonomous</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="android" spec="^6.2.3" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
</widget>
ashish @ 7567 ~/work/be_autonomous/cordova (master)
└─ $ ▶ cat
BeAutonomous.apk hooks/ .npmignore package-lock.json plugins/ run_emulator.sh run_studio.sh www_org/
config.xml node_modules/ package.json platforms/ res/ run.sh www/
ashish @ 7567 ~/work/be_autonomous/cordova (master)
└─ $ ▶ cat platforms/android/
android.json assets/ build.gradle CordovaLib/ gradle/ gradlew libs/ project.properties settings.gradle wrapper.gradle
AndroidManifest.xml build/ cordova/ .gitignore .gradle/ gradlew.bat platform_www/ res/ src/
ashish @ 7567 ~/work/be_autonomous/cordova (master)
└─ $ ▶ cat platforms/android/AndroidManifest.xml
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="com.beautonomous.first" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="25" />
</manifest>
ashish @ 7567 ~/work/be_autonomous/cordova (master)
└─ $ ▶
发布于 2017-08-17 13:59:15
Facebook有从//facebo...
开始的url。在Android中,它将重定向到file://facebo..
。
因此,加载facebook失败。
为了找到这个bug,我不得不在chrome控制台中调试这个应用程序。如果您可以将app本地部署到usb debugging
上的设备上,则打开chrome
并键入chrome://inspeect/#devices
并在控制台中写入错误。
但是,即使在修正了添加https://facebo..
之后,它也是不可见的。原因是facebook创建了一个iframe,它在科多瓦是不可见的。
发布于 2017-08-15 19:40:47
是的,您可以获取远程css和js文件。我以前做过。最重要的是"cordova.js“和”document.addEventListener“(”deviceready“,onDeviceReady,false);”必须在本地进行评估。您可以将其他文件放到服务器上,然后从那里调用它们。
第二,你必须有互联网许可,并访问原产地的权利。我可以看到您的config.xml有这个选项,所以您就这样做了。
https://stackoverflow.com/questions/45700191
复制相似问题