I have problems opening videos with links from google drive "https://drive.google.com/file/d/1uJRlap2SrJg3quKz03qMiwk1V2NqdeRz/preview"
I tried to follow the instructions of Soeurng Sar but could not run Link
I do not know calling in MainActivity
String uri = "https://drive.google.com/file/d/1uJRlap2SrJg3quKz03qMiwk1V2NqdeRz/preview"; try { String URL = downloadUrl (uri); // Toast.makeText (this, URL, Toast.LENGTH_SHORT) .show (); } catch (IOException e) { e.printStackTrace (); }
was it right?
I look forward to the help
Logcat:
2019-12-05 10:27:26.206 3219-3226/? E/zygote: Failed sending reply to debugger: Broken pipe
--------- beginning of crash 2019-12-05 10:27:26.857 3219-3219/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.playgoogledriver, PID: 3219 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.playgoogledriver/com.example.playgoogledriver.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.playgoogledriver.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.playgoogledriver-NIGfKN7tJNCjcLTpbSsCdg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.playgoogledriver-NIGfKN7tJNCjcLTpbSsCdg==/lib/x86, /system/lib, /system/vendor/lib]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2718) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.playgoogledriver.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.playgoogledriver-NIGfKN7tJNCjcLTpbSsCdg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.playgoogledriver-NIGfKN7tJNCjcLTpbSsCdg==/lib/x86, /system/lib, /system/vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.Instrumentation.newActivity(Instrumentation.java:1173) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2708) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Suppressed: java.io.IOException: Failed to open dex files from /data/app/com.example.playgoogledriver-NIGfKN7tJNCjcLTpbSsCdg==/base.apk because: Failure to verify dex file '/data/app/com.example.playgoogledriver-NIGfKN7tJNCjcLTpbSsCdg==/base.apk': Bad method handle type 7 at dalvik.system.DexFile.openDexFileNative(Native Method) at dalvik.system.DexFile.openDexFile(DexFile.java:353) at dalvik.system.DexFile.(DexFile.java:100) at dalvik.system.DexFile.(DexFile.java:74) at dalvik.system.DexPathList.loadDexFile(DexPathList.java:374) at dalvik.system.DexPathList.makeDexElements(DexPathList.java:337) at dalvik.system.DexPathList.(DexPathList.java:157) at dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:65) at dalvik.system.PathClassLoader.(PathClassLoader.java:64) at com.android.internal.os.PathClassLoaderFactory.createClassLoader(PathClassLoaderFactory.java:43) at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:69) at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:36) at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:676) at android.app.LoadedApk.getClassLoader(LoadedApk.java:709) at android.app.LoadedApk.getResources(LoadedApk.java:936) at android.app.ContextImpl.createAppContext(ContextImpl.java:2242) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5672) at android.app.ActivityThread.-wrap1(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661) ... 6 more
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.playgoogledriver">
<uses-permission android:name= "ERIC.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<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>
MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String uri = "https://drive.google.com/file/d/1uJRlap2SrJg3quKz03qMiwk1V2NqdeRz/preview";
try {
String URL = downloadUrl(uri);
Toast.makeText(this, URL, Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
public String downloadUrl(String myurl) throws IOException {
InputStream is = null;
try {
URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.connect();
is = conn.getInputStream();
String contentAsString = readIt(is);
return contentAsString;
} finally {
if (is != null) {
is.close();
}
}
}
public String readIt(InputStream stream) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
if (line.contains("fmt_stream_map")) {
sb.append(line + "\n");
break;
}
}
reader.close();
String result = decode(sb.toString());
String[] url = result.split("\\|");
return url[1];
}
public String decode(String in) {
String working = in;
int index;
index = working.indexOf("\\u");
while (index > -1) {
int length = working.length();
if (index > (length - 6)) break;
int numStart = index + 2;
int numFinish = numStart + 4;
String substring = working.substring(numStart, numFinish);
int number = Integer.parseInt(substring, 16);
String stringStart = working.substring(0, index);
String stringEnd = working.substring(numFinish);
working = stringStart + ((char) number) + stringEnd;
index = working.indexOf("\\u");
}
return working;
}