小编Asi*_*tel的帖子

FileObserver不适用于Android 6.0 Marshmallow(API 23)中的外部存储

我有一个应用程序,用于观察外部存储上的公共目录FileObserver.它在Lollipop设备上运行良好.我想添加支持Marshmallow,所以我用它设置了一个Nexus 9平板电脑.

在Marshmallow设备上,它失败了,在Lollipop设备上它没关系.在Marshmallow设备上,FileObserver它不会对由其他进程引起的文件系统事件做出反应.例如,截取屏幕截图,通过adbshell 创建文件.如果文件是由我的应用程序创建的,它可以正常工作.

Marshmallow,我要求WRITE_EXTERNAL_STORAGEREAD_EXTERNAL_STORAGE权限Manifest.xml.

当我用API 23编译时,我也确保我打电话ActivityCompat.requestPermissions().

当我用API 22编译时,我只是依靠Manifest.xml.

如果我观察它的话,它会起作用/data/data/my-package-name.

如果我观察到它,它就会失败/storage/emulated/0/Pictures/Screenshots.

是否有人测试FileObserver了以下所有内容?:

  • Marshmallow 设备
  • API 23和API 22?
  • 外部存储
  • 由观察应用程序之外的其他进程创建的文件(例如adb或截屏).

java android adb fileobserver android-6.0-marshmallow

31
推荐指数
1
解决办法
3478
查看次数

我什么时候需要android.hardware.location.gps和android.hardware.location.network?

Google会通过电子邮件通知Android位置权限的更改:

我们将在2016年10月15日进行更改,这将影响使用ACCESS_FINE_LOCATION但未明确拥有"android.hardware.location.gps"使用功能的API版本21(Android 5.0,Lollipop)或更高版本的应用.展望未来,这些应用程序可以安装在没有GPS硬件的设备上.在大多数情况下,这不会成为问题,因为基于Wi-Fi和基于Cell-ID的位置为这些应用的典型操作提供了足够高的保真度.但是,任何需要GPS硬件的应用程序(例如GPS导航仪)都应该明确地将"android.hardware.location.gps"使用功能添加到其清单中.

如果您的应用需要GPS才能正常运行且您的清单声明中未包含,则您的用户可能会遇到较差的应用体验.

此外,如果您正在使用融合位置提供商并希望从GPS接收最准确的位置样本(即使用PRIORITY_HIGH_ACCURACY),则必须在应用清单中包含"android.hardware.location.gps"功能,以确保Google Play只会将您的应用分发给配备GPS传感器的设备.

您可以在Android开发者帮助中心中详细了解此更改.

来自Android开发者帮助中心

要从NETWORK_PROVIDER或GPS_PROVIDER接收位置更新,您必须通过在Android清单文件中分别声明ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限来请求用户的权限.没有这些权限,您的应用程序将在请求位置更新时在运行时失败.

如果您同时使用NETWORK_PROVIDER和GPS_PROVIDER,则只需要请求ACCESS_FINE_LOCATION权限,因为它包含两个提供程序的权限.ACCESS_COARSE_LOCATION的权限仅允许访问NETWORK_PROVIDER.

警告:如果您的应用针对Android 5.0(API级别21)或更高版本,则必须声明您的应用使用清单文件中的android.hardware.location.network或android.hardware.location.gps硬件功能,具体取决于您的应用程序从NETWORK_PROVIDER或GPS_PROVIDER接收位置更新.如果您的应用从这些位置提供商来源中收到位置信息,则需要声明该应用在您的应用清单中使用这些硬件功能.在Android 5.0(API 21)之前运行版本的设备上,请求ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限包括对位置硬件功能的隐含请求.但是,请求这些权限不会自动请求Android 5.0(API级别21)及更高版本上的位置硬件功能.

我正在使用融合位置提供程序,目标是API 21,并使用ACCESS_FINE_LOCATION.我没有特别关心GPS是否可用,只是报告了最准确的位置.

  • 基于第一个引用,我想我不需要做任何改变.
  • 根据第二个引文,我认为我需要android.hardware.location.gpsandroid.hardware.location.network.或者这仅适用于LocationManager融合位置?

我需要android.hardware.location.gpsandroid.hardware.location.network不?

gps android geolocation android-permissions android-gps

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

Android:纵向模式下的相机预览方向

我正在使用相机仅显示预览(不拍照或录制视频).

应用程序始终处于纵向模式(禁用横向模式).相机预览总是旋转90度ccw我无法改变它(无论是setDisplayOrientation也不是p.set("orientation", "portrait" )p.set("rotation", 90) ).

预览总是像这样旋转还是依赖于设备?如果在纵向模式下总是如此,我可以随后旋转图像.

或者有没有办法正确设置相机?我已经阅读了很多有关此问题的帖子,但没有回答对我有用(Galaxy s2,Android v2.3)

camera android portrait rotation orientation

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

在设备上打印视图层次结构

调试我的应用程序在三星手机上的奇怪结果,我没有物理访问权限.我想请用户运行一个已检测的应用程序来帮助调试.我的应用程序获得了view一个未知(对我来说) - 层次结构(ViewGroups等).有没有办法"走" View并打印到字符串/其中的ddms所有组件View(ViewGroups等等)?

这类似于HierarchyViewer工具 - 如果我有adb对设备的级别访问权限.

更新:我想我可以使用这个方法

void dumpViewHierarchyWithProperties(Context context, ViewGroup group, BufferedWriter out, int level)
Run Code Online (Sandbox Code Playgroud)

来自ViewDebug.javaAndroid OS来源......

谁有更好的主意?

谢谢!

android android-layout

6
推荐指数
2
解决办法
5756
查看次数

点击通知后打开应用程序

我的应用程序中有一条通知,代码如下:

public class NewMessageNotification {

    private static final String NOTIFICATION_TAG = "NewMessage";

    public static void notify(final Context context,
                          final String exampleString,final String boday ,final int number) {
         final Resources res = context.getResources();

         // This image is used as the notification's large icon (thumbnail).
         // TODO: Remove this if your notification has no relevant thumbnail.
        final Bitmap picture = BitmapFactory.decodeResource(res, R.drawable.billsms);


        final String ticker = exampleString;
        final String title = res.getString(
            R.string.new_message_notification_title_template, exampleString);
        final String text = boday;

        final NotificationCompat.Builder builder …
Run Code Online (Sandbox Code Playgroud)

android android-notifications

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