小编Nit*_*der的帖子

Android:FileProvider IllegalArgumentException无法找到包含/data/data/**/files/Videos/final.mp4的已配置根目录

我正试图用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

android android-fileprovider

40
推荐指数
3
解决办法
4万
查看次数

WIFI开启时通过移动数据发送请求.(Android L)

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回调. …

networking android android-wifi android-5.0-lollipop

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

如何在Android和API列表中使用VPN?(棒糖)

参考:

Android 4.0有一个用于构建VPN服务的API.

  1. VPNService(Android文档)
  2. VPNService.Builder(Android Docs)
  3. Arne Schawbe为Android实现OpenVPN(github)

其中一款带有VPN服务的应用是NetMotionMobility®(Google Play)

从"Lollipop"版本开始,Android提供了一种新的VPN类型,它提供有关VPN连接状态,请求是否通过VPN等的信息.

检测结果

(连接到VPN)

  1. Android <= 5.0(Android Lollipop)
    1. 使用WIFI(Wlan)和Cellular(rmnet)接口IP连接成功.
    2. VPN(tun)接口IP地址连接成功,但未获得VPN连接/断开事件.
  2. Android> 5.0(Android Lollipop 5.1和6.0)
    1. 连接是不是成功与WIFI(WLAN)和蜂窝(rmnet)接口IP的.
    2. VPN(tun)接口IP的地址连接成功,并且还可以获得VPN连接/断开事件.

tun接口IP: 站点本地私有IP().

  1. ConnectivityManager#TYPE_VPN
  2. NetworkCapabilites#TRANSPORT_VPN
  3. NetworkCapabilities#NET_CAPABILITY_NOT_VPN

表示该网络不是VPN.此功能默认设置,应明确清除VPN网络.常数值:15(0x0000000f)

问题:

  1. 当VPN服务在设备上处于活动状态时,请求如何从WhatsApp,Skype或浏览器等第三方应用程序中运行?
  2. 连接VPN时,设备IP堆栈究竟发生了什么?
  3. VPN隧道如何在Android中运行?
  4. 应用程序绑定到活动IP并发送请求的设计是什么?
  5. 棒棒糖(5.0)中的VPN API不稳定吗?
  6. 如果bindProcessToNetwork通过Celluar网络完成并且WiFi连接在设备中,VPN将使用哪个网络?

java ip vpn android tunneling

33
推荐指数
1
解决办法
2525
查看次数

Android:在ACTION_SHUTDOWN事件之前关闭网络电台.事件订单在ICS中更改

当用户在设备上关闭电源时,我正在向我的服务器发送注销.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吗?

android android-intent

20
推荐指数
1
解决办法
1426
查看次数

在Android上收听自己的应用程序卸载事件

据我所知,应用程序无法为自己的卸载获取意图:

但是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&lts=1&iow=0&iom=0&iospd=0&iogs=0&debug=false&t=1382252820000 flg=0x10000000 …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-broadcast

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

Android:设备屏幕没有与最新的Android系统WEBVIEW超时

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日)

https://www.apkmirror.com/apk/google-inc/android-system-webview/android-system-webview-59-0-3071-25-release/android-system-webview-59-0-3071- 25-Android的APK下载/

看到屏幕超时问题.

7)问题没有看到android 7.0使用chrome v59作为webview.

使用的设备:注4(5.0.1)

Webview版本:59.0.3071.125

android google-chrome android-webview

15
推荐指数
1
解决办法
449
查看次数

如何获得覆盖请勿打扰设置值?

如何在Android中为我自己的软件包应用程序获取覆盖请勿打扰设置状态?

在此输入图像描述

android android-notifications

12
推荐指数
1
解决办法
1487
查看次数

android Q beta中的文件操作

1)目标设定为Android Qandroid.permission.WRITE_EXTERNAL_STORAGE

2)使用getExternalStorageDirectorygetExternalStoragePublicDirectoryFileOutputStream(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并刷新的最佳方法是什么。

android fileoutputstream android-10.0

10
推荐指数
3
解决办法
8143
查看次数

随机使用应用程序的ANR

我有一个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

8
推荐指数
1
解决办法
5219
查看次数

Android:通过 android &gt;=11 中的反射访问非 sdk(制造商提供的库)API

从 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://developer.android.com/guide/app-compatibility/restrictions-non-sdk-interfaces#results-of-keeping-non-sdk

https://www.xda-developers.com/android-11-harden-hidden-api-restriction-meta-reflection/

https://androidreverse.wordpress.com/2020/05/02/android-api-restriction-bypass-for-all-android-versions/

一种绕过方法如下。 https://github.com/ChickenHook/RestrictionBypass

查询:

“隐藏API黑名单仅适用于未列入白名单的用户应用。系统应用、平台签名的应用、配置文件中指定的应用均免除黑名单”

1)以上所有报价仍然适用于 Android 11?OEM 可以通过哪些方式将应用程序列入白名单以像以前一样使用 Reflection?

2)制造商提供的库api是否被视为非sdk api?

  1. 即使不使用 META REFLECTION,反射如何在 android 10(目标 29)中为相同的制造商提供的库工作?

https://www.xda-developers.com/android-development-bypass-hidden-api-restrictions/

谢谢

reflection sdk android android-11

7
推荐指数
1
解决办法
324
查看次数