webView загрузить фото на форум

Я пытаюсь создать приложение, которое просто открывает веб-просмотр и переходит на страницу моего форума на моем веб-сайте, но я не могу понять, почему я не могу загрузить фотографии. Я не думаю, что разрешения - это проблема, так как я настроил приложение на запрос разрешений при открытии (хотя вы должны дважды открыть приложение, чтобы получить как подсказки для камеры, так и разрешения на чтение / запись). Когда я нажимаю "Загрузить фото", ничего не происходит. Сайт отлично работает в обычном веб-браузере. Сайт создан с использованием Wix.

Я читал что-то вроде сотен ответов на подобные вопросы, и ни одна из работ не устарела, или я не понимаю ни одного из них. Я читал о том, что это связано с предупреждениями Java или с использованием WebChromeClient, но моя самая большая проблема в том, что я не знаю, в чем на самом деле проблема в том, чтобы попытаться найти ответ или как на самом деле написать решение.

Я собираюсь поместить весь свой код здесь, но я не просто хочу получить ответ о том, как это исправить, я хочу знать, почему он не работает, и как я могу выяснить, как исправить такие проблемы в будущее самостоятельно.

основной вид деятельности XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    tools:context=".MainActivity">

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#000000" />

    <com.google.android.gms.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-3940256099942544/6300978111">

    </com.google.android.gms.ads.AdView>

</RelativeLayout>

ГлавнаяДеятельность JAVA

package inventory.csdc.com.csdcinventory;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.MobileAds;

public class MainActivity extends AppCompatActivity {
    private AdView mAdView;
    WebView webview;

    private static final String TAG = "MainActivity";
    private static final String [] CAMERA_PERMISSIONS = {
            Manifest.permission.CAMERA};
    private static final String [] STORAGE_PERMISSIONS ={
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        verifyPermissions();

        webview = findViewById(R.id.webview);
        webview.getSettings() .setJavaScriptEnabled(true);
        webview.getSettings() .setJavaScriptCanOpenWindowsAutomatically(true);
        webview.getSettings() .setRenderPriority(WebSettings.RenderPriority.HIGH);
        webview.getSettings() .setAppCacheEnabled(true);
        webview.loadUrl("https://funforums.wixsite.com/csdc");
        webview.setWebViewClient(new WebViewClient());
        webview.setWebChromeClient(new WebChromeClient());
        webview.getSettings() .setUseWideViewPort(true);

        MobileAds.initialize(this, "MY ADMOB ID");

        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);

    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {


        // Check if the key event was the Back button and if there's history
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
            webview.goBack();
            return true;
        }
        // If it wasn't the Back key or there's no web page history, bubble up to the default
        // system behavior (probably exit the activity)
        return super.onKeyDown(keyCode, event);
    }


    private void verifyPermissions(){
        Log.d(TAG, "verifyPermissions: Checking Permissions");

        int permissionCamera = ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA);
        int permissionExternalMemory = ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

        if (permissionExternalMemory != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    MainActivity.this,
                    STORAGE_PERMISSIONS,
                    1
            );
        }
        if (permissionCamera != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(
                    MainActivity.this,
                    CAMERA_PERMISSIONS,
                    1
            );
        }

    }

}

AndroidManifest XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="inventory.csdc.com.csdcinventory">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_dance2"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="[MY ADMOB ID]" />

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

построить gradle (приложение)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "inventory.csdc.com.csdcinventory"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.google.android.gms:play-services-ads:17.0.0'
    implementation 'com.android.support:customtabs:27.1.1'
}

построить gradle (CSDCInventory2)

buildscript {

    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'


    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()

        maven {
            url "https://maven.google.com"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

0 ответов

Другие вопросы по тегам