相关疑难解决方法(0)

Android 8:不允许使用Cleartext HTTP流量

我收到了Android 8用户的报告,我的应用(使用后端Feed)没有显示内容.经过调查,我发现在Android 8上发生以下异常:

08-29 12:03:11.246 11285-11285/ E/: [12:03:11.245, main]: Exception: IOException java.io.IOException: Cleartext HTTP traffic to * not permitted
at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.doConnection(AbstractHttpAsyncTask.java:207)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.extendedDoInBackground(AbstractHttpAsyncTask.java:102)
at com.deiw.android.generic.tasks.AbstractAsyncTask.doInBackground(AbstractAsyncTask.java:88)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Run Code Online (Sandbox Code Playgroud)

(我删除了包名,URL和其他可能的标识符)

在Android 7及更低版本上一切正常,我没有设置android:usesCleartextTrafficManifest(并设置它true没有帮助,无论如何这是默认值),我也没有使用网络安全信息.如果我打电话NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted(),它会返回falseAndroid 8,true对于旧版本,使用相同的apk文件.我试图在关于Android O的Google信息上找到一些提及,但没有成功.

https android http

782
推荐指数
19
解决办法
41万
查看次数

Cordova与Create-react-app

我用create-react-app创建了一个ReactJs应用程序,然后使用了npm run build.在我用Cordova创建的www文件夹中,我只是复制create-react-app的 build文件夹中的所有文件,这很好.

我想知道如何挂钩Cordova的事件,例如:

function startApp() {
  // your app logic
}
if (window.cordova) {
  document.addEventListener('deviceready', startApp, false);
} else {
  startApp();
}
Run Code Online (Sandbox Code Playgroud)

例如,我想在里面调用缩小的JS文件startApp().或者是否有任何其他工作流可用于使Cordova事件与react应用程序一起使用.

一个小例子会有所帮助.

是否可以使用构建文件并直接在Cordova内部使用React App?我不确定这是如何工作的,因为有Webpack设置将ES6代码转换为ES5和所有.

我是Cordova的新手,并且在这个整合方面苦苦挣扎.

javascript cordova reactjs create-react-app

22
推荐指数
3
解决办法
1万
查看次数

使用Android Hybid应用程序来显示Ionic框架的远程图像问题?

我是Ionic的新手.我正在使用Ionic Framework(1.3.20),Angular JS,Cordova 5.0.0

模板文件 browse.html代码:

<div class="col-50"><img ng-src="{{availableImages[currentImage].src}}" /></div>
Run Code Online (Sandbox Code Playgroud)

app.js代码:

.state('app.browse', {
    url: "/browse",
    views: {
      'menuContent': {
        templateUrl: "templates/browse.html",
        controller: 'Ctrl'
      }
    }
  })
Run Code Online (Sandbox Code Playgroud)

controller.js代码

.controller('Ctrl',function($scope) {
      $scope.currentImage = 0;
      $scope.availableImages = [
        {
          src: "http://lorempixel.com/160/160/people/3"
        }
        ];
      console.log("reading image in controller !!!");
})
Run Code Online (Sandbox Code Playgroud)

标题详细信息:

Request URL:http://lorempixel.com/160/160/people/3
Request Method:GET
Status Code:404 Not Found (from cache)
Response Headers
Client-Via:shouldInterceptRequest
Request Headers
Provisional headers are shown
Accept:image/webp,*/*;q=0.8
User-Agent:Mozilla/5.0 (Linux; Android 5.0.2; XT1033 Build/LXB22.46-28; wv) AppleWebKit/537.36 (KHTML, like …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs cordova hybrid-mobile-app ionic

16
推荐指数
2
解决办法
2万
查看次数

在iOS上使用Ionic 2 Native访问本地图像

我正在使用离子2本机ImagePicker插件

ImagePicker.getPictures({
  maximumImagesCount: 1
}).then((results) => {
    vm.sourcePath = results[0]
    console.log(vm.sourcePath)
    // file:///Users/aymanjitan/Library/Developer/CoreSimulator/Devices/E937952F-7FAA-4DBB-8E23-80B04F3B6C72/data/Containers/Data/Application/FCF9097F-67BD-4DAD-AE30-D2F1839C0374/tmp/cdv_photo_003.jpg
})
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用image src属性访问此图像

<img [src]='sourcePath' />
Run Code Online (Sandbox Code Playgroud)

甚至硬编码路径

<img src="file:///Users/aymanjitan/Library/Developer/CoreSimulator/Devices/E937952F-7FAA-4DBB-8E23-80B04F3B6C72/data/Containers/Data/Application/FCF9097F-67BD-4DAD-AE30-D2F1839C0374/tmp/cdv_photo_003.jpg"
Run Code Online (Sandbox Code Playgroud)

但这没有任何表现.

知道

<apan>{{sourcePath}}</apan>
Run Code Online (Sandbox Code Playgroud)

正确显示路径!

我尝试使用离子原生文件插件将图像转换为base64

var sourceDirectory = vm.sourcePath.substring(0, vm.sourcePath.lastIndexOf('/') + 1);
var sourceFileName = vm.sourcePath.substring(vm.sourcePath.lastIndexOf('/') + 1, vm.sourcePath.length);
File.readAsArrayBuffer(sourceDirectory, sourceFileName).then((fileData)=> {
  console.log(fileData)
}, () => {
  console.log('error')
})
Run Code Online (Sandbox Code Playgroud)

但是这会引发错误

我在config.xml中添加了这些白名单规则

<access origin="*"/>
<allow-navigation href="*"/>
<allow-navigation href="file://*/*"/>
Run Code Online (Sandbox Code Playgroud)

但仍然没有运气

我虽然可能返回的文件路径不正确所以我把它放在我的浏览器中,它显示了应该选择的图像

那么如何在iOS上使用ionic 2访问本地图像(9.3)

ios ionic-framework cordova-plugins ngcordova ionic2

9
推荐指数
1
解决办法
2557
查看次数