我正试图用FileProvider私人路径播放视频.面对
java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/XXXXX(Package)/files/Videos/final.mp4
Run Code Online (Sandbox Code Playgroud)
码:
<paths>
<files-path path="my_docs" name="Videos/" />
</paths>
Run Code Online (Sandbox Code Playgroud)
Java代码:
File imagePath = new File(getFilesDir(), "Videos");
File newFile = new File(imagePath, "final.mp4");
Log.d(TAG, "-------------newFile:"+newFile.exists());//True here
//Exception in below line
Uri contentUri = FileProvider.getUriForFile(this,"com.wow.fileprovider", newFile);
Run Code Online (Sandbox Code Playgroud)
的Manifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.wow.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
Run Code Online (Sandbox Code Playgroud)
这有什么线索吗?
谢谢Nitz
SDK:Android 5.0.1.
Android版本:LRX22C.
设备:Nexus 5.
问题:KITKAT(4.4.4)及以下API
1)startUsingNetworkFeature(int networkType, String feature)
不推荐使用此方法.不赞成使用清洁剂requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback).
2)requestRouteToHost(int networkType, int hostAddress)
不推荐使用此方法.贬低赞成requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback),setProcessDefaultNetwork(Network)和getSocketFactory().
用于在WIFI和移动数据打开时通过移动数据网络发送请求.
启动Android L后,API已弃用,不再有效.
新的API /类NetworkRequest.Builder,NetworkRequest,ConnectivityManager.NetworkCallback,requestNetwork,registerNetworkCallback分别使用.
详细信息这里有关于API使用
Android L API的信息
码:
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder = new NetworkRequest.Builder();
builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
NetworkRequest networkRequest = builder.build();
connectivityManager.requestNetwork(networkRequest, networkCallback);
connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
Run Code Online (Sandbox Code Playgroud)
工作场景:
仅onAvailable接收回调上的移动数据.
不工作场景:移动和Wifi都已打开并连接,onAvailable未从系统接收回叫.因此无法设置setProcessDefaultNetwork,
ConnectivityManager.setProcessDefaultNetwork(preferedNetwork);
经常:永远
预期输出:当wifi打开时获取移动网络avaliabe回调. …
Android 4.0有一个用于构建VPN服务的API.
其中一款带有VPN服务的应用是NetMotionMobility®(Google Play)
从"Lollipop"版本开始,Android提供了一种新的VPN类型,它提供有关VPN连接状态,请求是否通过VPN等的信息.
(连接到VPN)
表示该网络不是VPN.此功能默认设置,应明确清除VPN网络.常数值:15(0x0000000f)
当用户在设备上关闭电源时,我正在向我的服务器发送注销.2.3 和4.0.3中的事件顺序如下.现在注销失败.
设备:三星Galaxy s2
Android:2.3
1)接收ACTION_SHUTDOWN
2)发送注销事件,休眠5秒,LOG OUT SENT SUCCESSFULLY
3)数据网络无线电关闭事件.
4)设备电源关闭.
Android:4.0.3
1)数据网络无线电关闭事件.
2)接收ACTION_SHUTDOWN
3)发送注销事件,LOG OUT FAIL As Network down.
在数据网络无线电关闭之前,有什么方法可以获得ACTION_SHUTDOWN吗?
据我所知,应用程序无法为自己的卸载获取意图:
但是Dolphin Browser如何设法接收"已删除"事件并启动浏览器,如附图所示?

ADB:
10-20 12:37:00.997: D/BackupManagerService(527): Received broadcast Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:mobi.mgeek.TunnyBrowser flg=0x8000010 (has extras) }
10-20 12:37:00.997: V/BackupManagerService(527): removePackageParticipantsLocked: uid=10112 #1
10-20 12:37:01.007: D/dalvikvm(527): GC_EXPLICIT freed 2247K, 12% free 20128K/22868K, paused 3ms+10ms, total 212ms
10-20 12:37:01.107: D/dalvikvm(527): GC_FOR_ALLOC freed 1508K, 15% free 19649K/22868K, paused 60ms, total 60ms
10-20 12:37:01.137: D/AndroidRuntime(4028): Calling main entry com.android.commands.am.Am
10-20 12:37:01.137: D/dalvikvm(4028): Note: class Landroid/app/ActivityManagerNative; has 163 unimplemented (abstract) methods
10-20 12:37:01.147: I/ActivityManager(527): START u0 {act=android.intent.action.VIEW dat=http://survey.dolphin.com/int/uninstall?id=014f4d1981d6f88bb56630e7a3a7550a&pn=mobi.mgeek.TunnyBrowser&v=248&s=ofw&it=1382250136565&ut=1382250127000&m=Nexus 4&os=android&osv=4.3&cc=US&no=40471&lang=en&jk=uninstalled&ft=212&ht=957&ct=0&nt=1&res=768*1184&ifi=1<s=1&iow=0&iom=0&iospd=0&iogs=0&debug=false&t=1382252820000 flg=0x10000000 …Run Code Online (Sandbox Code Playgroud) 1)基于Cordova(Webview)的Android应用程序.
2)根据设备设置启动应用程序和屏幕超时.
3)从应用程序端,我们没有获取任何SCREEN_BRIGHT_WAKE_LOCK或ON_AFTER_RELEASE.
4)当应用程序放到后台并带到前台时,设备屏幕灯不会超时.
4)从应用程序端,我们没有获取任何SCREEN_BRIGHT_WAKE_LOCK或ON_AFTER_RELEASE.
5)基本上来到前台时,PowerManager获取ON_AFTER_RELEASE | SCREEN_BRIGHT_WAKE_LOCK(0x2000000a)代表我们的应用程序10311唤醒锁定并且屏幕保持打开状态.
Line 58354: 08-14 22:49:22.280 D/PowerManagerService( 1088): [api] acquire WakeLock flags=0x2000000a tag=WindowManager uid=1000 pid=1088
08-14 22:50:22.000 I/PowerManagerService( 1088): [PWL] SCREEN_BRIGHT_WAKE_LOCK 'WindowManager' ON_AFTER_RELEASE (uid=1000, pid=1088, ws=WorkSource{10311}) (elapsedTime=59719)
Run Code Online (Sandbox Code Playgroud)
6)启动Android系统WebView 59.0.3071.25 beta(无法正常工作)(2017年5月4日)
看到屏幕超时问题.
7)问题没有看到android 7.0使用chrome v59作为webview.
使用的设备:注4(5.0.1)
Webview版本:59.0.3071.125
1)目标设定为Android Q与android.permission.WRITE_EXTERNAL_STORAGE
2)使用getExternalStorageDirectory或getExternalStoragePublicDirectory并FileOutputStream(file)保存文件抛出
java.io.FileNotFoundException: /storage/emulated/0/myfolder/mytext.txt open failed: ENOENT (No such file or directory)
3)使用getExternalFilesDirapi并保存成功但即使之后也不会出现MediaScannerConnection.scanFile。
/storage/emulated/0/Android/data/my.com.ui/files/Download/myfolder/mytext.txt
Run Code Online (Sandbox Code Playgroud)
在android Q中将文件从内部存储器复制到SDCARD并刷新的最佳方法是什么。
我有一个VOIP应用程序,引擎部分是C(NDK)级别.随机使用应用程序我以ANR指向"at android.os.MessageQueue.nativePollOnce(Native Method)"结束.
使用android-ndk-r5
ANR痕迹:
----- pid 13735 at 2013-05-23 15:56:47 -----
Cmd line: com.myapp.voip
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41315508 self=0x413058e8
| sysTid=13735 nice=0 sched=0/0 cgrp=apps handle=1074442032
| schedstat=( 23115964360 3706387400 21258 ) utm=1651 stm=660 core=3
#00 pc 0000da70 /system/lib/libc.so (epoll_wait+12)
#01 pc 00014899 /system/lib/libutils.so (android::Looper::pollInner(int)+96)
#02 pc 00014b01 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+104)
#03 pc 00063443 /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, int)+22)
#04 pc 0001de70 /system/lib/libdvm.so (dvmPlatformInvoke+112)
#05 …Run Code Online (Sandbox Code Playgroud) android libc android-ndk-r5 android-anr-dialog android-activity
从 Android 11 开始,基于反射的非 sdk(私有)api 调用被阻止。Android 系统会检查反射方法的调用者,如果它的非系统应用程序会以阻止列表/黑名单的错误拒绝。
"Accessing hidden method Lcom/example/com;->getSomeMethod()Lcom/example/com; (blacklist, reflection, denied)"
Run Code Online (Sandbox Code Playgroud)
在下面的链接中有更多详细信息。
https://www.xda-developers.com/android-11-harden-hidden-api-restriction-meta-reflection/
一种绕过方法如下。 https://github.com/ChickenHook/RestrictionBypass
查询:
“隐藏API黑名单仅适用于未列入白名单的用户应用。系统应用、平台签名的应用、配置文件中指定的应用均免除黑名单”
1)以上所有报价仍然适用于 Android 11?OEM 可以通过哪些方式将应用程序列入白名单以像以前一样使用 Reflection?
2)制造商提供的库api是否被视为非sdk api?
https://www.xda-developers.com/android-development-bypass-hidden-api-restrictions/
谢谢
android ×10
android-10.0 ×1
android-11 ×1
android-wifi ×1
ip ×1
java ×1
libc ×1
networking ×1
reflection ×1
sdk ×1
tunneling ×1
vpn ×1