diff --git a/build.gradle b/build.gradle
index f367c22..ab3481a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.2.3'
+ classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 9749071..4c6ab13 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Sep 05 12:03:48 CST 2017
+#Fri Sep 15 10:45:07 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml
index 1087214..3ee4cf3 100644
--- a/sample/src/main/AndroidManifest.xml
+++ b/sample/src/main/AndroidManifest.xml
@@ -63,7 +63,7 @@
android:name=".ui.activity.view.KeyBoardActivity"
android:windowSoftInputMode="adjustResize" />
-
+
\ No newline at end of file
diff --git a/sample/src/main/java/com/sample/ui/activity/WebVideoActivity.java b/sample/src/main/java/com/sample/ui/activity/WebVideoActivity.java
new file mode 100644
index 0000000..c7d0b7e
--- /dev/null
+++ b/sample/src/main/java/com/sample/ui/activity/WebVideoActivity.java
@@ -0,0 +1,166 @@
+package com.sample.ui.activity;
+
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
+import android.os.Message;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.webkit.WebChromeClient;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.FrameLayout;
+
+import com.sample.R;
+
+public class WebVideoActivity extends BaseActivity {
+ private FrameLayout mFrameLayout;
+ private WebView mWebView;
+ private InsideWebChromeClient mInsideWebChromeClient;
+ //private JavascriptInterface javascriptInterface;
+ private String URL = "http://www.chinichi.cn/news/index/app_detail.html?id=2362";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ // 1
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_web_video);
+ // 2
+ mFrameLayout = (FrameLayout) findViewById(R.id.mFrameLayout);
+ mWebView = (WebView) findViewById(R.id.mWebView);
+ // 3
+ initWebView();
+ mWebView.loadUrl(URL);
+ }
+
+ private void initWebView() {
+ WebSettings settings = mWebView.getSettings();
+ settings.setJavaScriptEnabled(true);
+ settings.setJavaScriptCanOpenWindowsAutomatically(true);
+ settings.setPluginState(WebSettings.PluginState.ON);
+ //settings.setPluginsEnabled(true);
+ settings.setAllowFileAccess(true);
+ settings.setLoadWithOverviewMode(true);
+ settings.setUseWideViewPort(true);
+ settings.setAppCacheEnabled(false);
+// settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
+// settings.setCacheMode(WebSettings.LOAD_DEFAULT);
+ mInsideWebChromeClient = new InsideWebChromeClient();
+ InsideWebViewClient mInsideWebViewClient = new InsideWebViewClient();
+ //javascriptInterface = new JavascriptInterface();
+ //mWebView.addJavascriptInterface(javascriptInterface, "java2js_laole918");
+ mWebView.setWebChromeClient(mInsideWebChromeClient);
+ mWebView.setWebViewClient(mInsideWebViewClient);
+ }
+
+ private class InsideWebChromeClient extends WebChromeClient {
+ private View mCustomView;
+ private CustomViewCallback mCustomViewCallback;
+
+ @Override
+ public void onShowCustomView(View view, CustomViewCallback callback) {
+ super.onShowCustomView(view, callback);
+ if (mCustomView != null) {
+ callback.onCustomViewHidden();
+ return;
+ }
+ mCustomView = view;
+ mFrameLayout.addView(mCustomView);
+ mCustomViewCallback = callback;
+ mWebView.setVisibility(View.GONE);
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+ }
+
+ public void onHideCustomView() {
+ mWebView.setVisibility(View.VISIBLE);
+ if (mCustomView == null) {
+ return;
+ }
+ mCustomView.setVisibility(View.GONE);
+ mFrameLayout.removeView(mCustomView);
+ mCustomViewCallback.onCustomViewHidden();
+ mCustomView = null;
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ super.onHideCustomView();
+ }
+
+ @Override
+ public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
+ mWebView = new WebView(view.getContext());
+ view.addView(mWebView);
+ WebSettings settings = mWebView.getSettings();
+ settings.setJavaScriptEnabled(true);
+ mWebView.setWebViewClient(new WebViewClient());
+ mWebView.setWebChromeClient(this);
+
+ WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+ transport.setWebView(mWebView);
+ resultMsg.sendToTarget();
+ return true;
+ }
+ }
+
+ private class InsideWebViewClient extends WebViewClient {
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ // TODO Auto-generated method stub
+ view.loadUrl(url);
+ return true;
+ }
+
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ super.onPageFinished(view, url);
+ //mWebView.loadUrl(javascript);
+ }
+
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration config) {
+ super.onConfigurationChanged(config);
+ switch (config.orientation) {
+ case Configuration.ORIENTATION_LANDSCAPE:
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ break;
+ case Configuration.ORIENTATION_PORTRAIT:
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ break;
+ }
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ mWebView.onPause();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ mWebView.onResume();
+ }
+
+ @Override
+ public void onBackPressed() {
+ if (mWebView.canGoBack()) {
+ mWebView.goBack();
+ return;
+ }
+ super.onBackPressed();
+ }
+
+ @Override
+ public void onDestroy() {
+ mWebView.destroy();
+ super.onDestroy();
+ }
+
+}
diff --git a/sample/src/main/java/com/sample/ui/activity/util/SDCardUtilActivity.java b/sample/src/main/java/com/sample/ui/activity/util/SDCardUtilActivity.java
index c831088..2e232ab 100644
--- a/sample/src/main/java/com/sample/ui/activity/util/SDCardUtilActivity.java
+++ b/sample/src/main/java/com/sample/ui/activity/util/SDCardUtilActivity.java
@@ -18,12 +18,16 @@ protected void onCreate(Bundle savedInstanceState) {
final StringBuilder builder = new StringBuilder();
builder.append("---判断SD卡是否可用---" + SDCardUtil.isSDCardMounted());
builder.append("\n");
+ builder.append("---判断SDCard是否可拆卸---" + SDCardUtil.isSDCarfRemovable());
+ builder.append("\n");
builder.append("---getExternalStorageState---" + SDCardUtil.getExternalStorageState());
builder.append("\n");
builder.append("---获取SD卡的根目录---" + SDCardUtil.getSDCardBaseDir());
builder.append("\n");
builder.append("---获取SD卡的根目录---" + SDCardUtil.getSDCardPath());
builder.append("\n");
+ builder.append("---获取SD卡data路径---" + SDCardUtil.getDataPath());
+ builder.append("\n");
builder.append("---获取SD卡的信息---" + SDCardUtil.getSDCardInfo());
builder.append("\n");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
@@ -39,15 +43,34 @@ protected void onCreate(Bundle savedInstanceState) {
builder.append("\n");
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
- builder.append("---获取SD卡的剩余空间大小---" + SDCardUtil.getSDCardFreeSizeMB()+ " MB");
+ builder.append("---获取SD卡的剩余空间大小---" + SDCardUtil.getSDCardFreeSizeMB() + " MB");
builder.append("\n");
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
- builder.append("---获取SD卡的可用空间大小---" + SDCardUtil.getSDCardAvailableSizeMB()+ " MB");
+ builder.append("---获取SD卡的可用空间大小---" + SDCardUtil.getSDCardAvailableSizeMB() + " MB");
builder.append("\n");
}
- builder.append("---获取SD卡data路径---" + SDCardUtil.getDataPath());
+
+ builder.append("---获取SD卡私有Cache目录的路径---" + SDCardUtil.getSDCardPrivateCacheDir());
+ builder.append("\n");
+ builder.append("---判断路径文件是否存在---" + SDCardUtil.isFileExist(SDCardUtil.getDataPath()));
+ builder.append("\n");
+ builder.append("---获取当前程序路径 应用在内存上的目录---" + SDCardUtil.getCurrentAppStoragePath());
+ builder.append("\n");
+ builder.append("---应用的在内存上的缓存目录---" + SDCardUtil.getCurrentAppCachePath());
builder.append("\n");
+ builder.append("---应用在外部存储上的目录---" + SDCardUtil.getCurrentAppExternalStoragePath());
+ builder.append("\n");
+ builder.append("---应用的在外部存储上的缓存目录---" + SDCardUtil.getCurrentAppExternalCachePath());
+ builder.append("\n");
+ builder.append("---获取该程序的安装包路径---" + SDCardUtil.getCurrentAppPackageResourcePath());
+ builder.append("\n");
+ builder.append("---获取程序默认数据库路径---" + SDCardUtil.getCurrentAppDatabasePath("sample"));
+ builder.append("\n");
+ builder.append("---获取下载文件存储路径---" + SDCardUtil.getDownloadCachePath());
+ builder.append("\n");
+
+
t.setText(builder.toString());
}
}
diff --git a/sample/src/main/java/com/sample/ui/fragment/ViewFragment.java b/sample/src/main/java/com/sample/ui/fragment/ViewFragment.java
index f6ef0f3..ded78f0 100644
--- a/sample/src/main/java/com/sample/ui/fragment/ViewFragment.java
+++ b/sample/src/main/java/com/sample/ui/fragment/ViewFragment.java
@@ -16,6 +16,7 @@
import com.sample.adapter.CustomAdapter;
import com.sample.bean.UtilData;
import com.sample.ui.BaseFragment;
+import com.sample.ui.activity.WebVideoActivity;
import com.sample.ui.activity.util.ActivityUtilActivity;
import com.sample.ui.activity.util.AppActivity;
import com.sample.ui.activity.util.ClearActivity;
@@ -91,6 +92,7 @@ protected void initData() {
datas.add(new UtilData("Shape封装的View测试", ShapeViewActivity.class.getName()));
datas.add(new UtilData("点击View切换软件盘测试", KeyBoardActivity.class.getName()));
datas.add(new UtilData("QQ运动计步器View", QQStepViewActivity.class.getName()));
+ datas.add(new UtilData("WebVideoActivity", WebVideoActivity.class.getName()));
adapter.addAll(datas);
}
diff --git a/sample/src/main/res/layout/activity_web_video.xml b/sample/src/main/res/layout/activity_web_video.xml
new file mode 100644
index 0000000..90ce799
--- /dev/null
+++ b/sample/src/main/res/layout/activity_web_video.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/siberiadante/src/main/java/com/siberiadante/lib/util/SDCardUtil.java b/siberiadante/src/main/java/com/siberiadante/lib/util/SDCardUtil.java
index 40a8deb..8f58eae 100644
--- a/siberiadante/src/main/java/com/siberiadante/lib/util/SDCardUtil.java
+++ b/siberiadante/src/main/java/com/siberiadante/lib/util/SDCardUtil.java
@@ -48,6 +48,15 @@ public static boolean isSDCardMounted() {
return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
}
+ /**
+ * 判断SDCard是否可拆卸
+ *
+ * @return
+ */
+ public static boolean isSDCarfRemovable() {
+ return Environment.isExternalStorageRemovable();
+ }
+
/**
* 获取SD卡的根目录
*
@@ -251,6 +260,72 @@ public static String getDataPath() {
return Environment.getExternalStorageDirectory().getPath() + File.separator + "data" + File.separator;
}
+ /**
+ * 获取下载文件存储路径
+ *
+ * @return
+ */
+ public static String getDownloadCachePath() {
+ return Environment.getDownloadCacheDirectory().toString();
+ }
+
+ /**
+ * 获取当前程序路径 应用在内存上的目录 :/data/data/com.sample/files
+ *
+ * @return
+ */
+ public static String getCurrentAppStoragePath() {
+ return SiberiaDanteLib.getContext().getFilesDir().toString();
+ }
+
+ /**
+ * 应用的在内存上的缓存目录 :/data/data/com.sample/cache
+ *
+ * @return
+ */
+ public static String getCurrentAppCachePath() {
+ return SiberiaDanteLib.getContext().getCacheDir().toString();
+ }
+
+ /**
+ * 应用在外部存储上的目录 :/storage/emulated/0/Android/data/com.sample/files/Movies
+ *
+ * @return
+ */
+ public static String getCurrentAppExternalStoragePath() {
+ return SiberiaDanteLib.getContext().getExternalFilesDir(Environment.DIRECTORY_MOVIES).toString();
+ }
+
+ /**
+ * 应用的在外部存储上的缓存目录 :/storage/emulated/0/Android/data/com.sample/cache
+ *
+ * @return
+ */
+ public static String getCurrentAppExternalCachePath() {
+ return SiberiaDanteLib.getContext().getExternalCacheDir().toString();
+ }
+
+
+ /**
+ * 获取该程序的安装包路径 :/data/app/com.sample-1.apk
+ *
+ * @return
+ */
+
+ public static String getCurrentAppPackageResourcePath() {
+ return SiberiaDanteLib.getContext().getPackageResourcePath();
+ }
+
+ /**
+ * 获取程序默认数据库路径 :/data/data/com.sample/databases/
+ *
+ * @param dataName
+ * @return
+ */
+ public static String getCurrentAppDatabasePath(String dataName) {
+ return SiberiaDanteLib.getContext().getDatabasePath(dataName).toString();
+ }
+
/**
* 获取SD卡信息
*
@@ -272,30 +347,10 @@ public static String getSDCardInfo() {
return sd.toString();
}
- public static class SDCardInfo {
- boolean isExist;
- long totalBlocks;
- long freeBlocks;
- long availableBlocks;
- long blockByteSize;
- long totalBytes;
- long freeBytes;
- long availableBytes;
-
- @Override
- public String toString() {
- return "isExist=" + isExist +
- "\ntotalBlocks=" + totalBlocks +
- "\nfreeBlocks=" + freeBlocks +
- "\navailableBlocks=" + availableBlocks +
- "\nblockByteSize=" + blockByteSize +
- "\ntotalBytes=" + totalBytes +
- "\nfreeBytes=" + freeBytes +
- "\navailableBytes=" + availableBytes;
- }
- }
//---start---2017-09-14
+
+
// 往SD卡的公有目录下保存文件
public static boolean saveFileToSDCardPublicDir(byte[] data, String type,
String fileName) {
@@ -479,6 +534,22 @@ public Bitmap loadBitmapFromSDCard(String filePath) {
return null;
}
+
+ // 从sdcard中删除文件
+ public static boolean removeFileFromSDCard(String filePath) {
+ File file = new File(filePath);
+ if (file.exists()) {
+ try {
+ file.delete();
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+
// 获取SD卡公有目录的路径
public static String getSDCardPublicDir(String type) {
return Environment.getExternalStoragePublicDirectory(type).toString();
@@ -495,6 +566,8 @@ public static String getSDCardPrivateFilesDir(String type) {
}
/**
+ * 判断路径文件是否存在
+ *
* @param filePath
* @return
*/
@@ -503,19 +576,26 @@ public static boolean isFileExist(String filePath) {
return file.isFile();
}
- // 从sdcard中删除文件
- public static boolean removeFileFromSDCard(String filePath) {
- File file = new File(filePath);
- if (file.exists()) {
- try {
- file.delete();
- return true;
- } catch (Exception e) {
- return false;
- }
- } else {
- return false;
+ public static class SDCardInfo {
+ boolean isExist;
+ long totalBlocks;
+ long freeBlocks;
+ long availableBlocks;
+ long blockByteSize;
+ long totalBytes;
+ long freeBytes;
+ long availableBytes;
+
+ @Override
+ public String toString() {
+ return "isExist=" + isExist +
+ "\ntotalBlocks=" + totalBlocks +
+ "\nfreeBlocks=" + freeBlocks +
+ "\navailableBlocks=" + availableBlocks +
+ "\nblockByteSize=" + blockByteSize +
+ "\ntotalBytes=" + totalBytes +
+ "\nfreeBytes=" + freeBytes +
+ "\navailableBytes=" + availableBytes;
}
}
-
}