标签: android-7.0-nougat

Android Nougat中的文件系统更改

自从Android N开发人员预览版首次发布以来,在尝试列出根目录或其他系统目录时,我收到"权限被拒绝"错误.这些目录的权限似乎没有改变(据我所知).

题:

Android N中的哪些更改导致这些权限被拒绝错误?


如何复制:

在ADB shell中,运行以下命令:

run-as com.debuggable.packagename
ls /
Run Code Online (Sandbox Code Playgroud)

这会在Android N上提供权限被拒绝的错误.


为什么列出系统目录:

我注意到Android N上有几个文件管理器的这种行为.他们无法再列出根目录或其他系统文件.这也限制ps了shell 中运行的输出.这些更改也导致此停止在Android N上运行.

filesystems android file-permissions permission-denied android-7.0-nougat

29
推荐指数
2
解决办法
8326
查看次数

Eclipse - 使用Android 7清空Logcat

我最近将我的Nexus 9平板电脑更新为Android 7 Nougat.
从那时起,Eclipse中的Logcat视图停止显示Logcat消息,视图保持为空.
设备目标也显示为"未知".如果我在Eclipse外部启动Logcat(AndroidSDK-> tools-> ddms),它会显示所有消息.但是,"应用程序"列保持为空.
关于这个主题已经有一些(较旧的)问题在这里,但这里没有一个解决方案适合我.
我尝试了什么:

  • 使用另一个USB端口
  • 将设备聚焦在DDMS透视图中
  • 重启Eclipse
  • 重启设备+电脑
  • abd kill-server
  • 禁用并重新启用设备上的USB Debuging
  • 重置USB-Debuging授权并再次确认RSA指纹
  • 将USB模式切换为"MTP"

Android SDK中每个安装的软件包都是最新的,我使用最新的Eclipse + ADT插件.
我的Galaxy S5 Mini(Android 5.1.1)也能正常运行.
我知道,ADT-Plugin已被弃用,我们应该使用Android Studio.
但是我仍然尽可能地使用Eclipse,所以我正在寻找这个问题的解决方案.
那么有谁知道如何解决这个问题?

eclipse android adt logcat android-7.0-nougat

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

如何修复:没有任何消息的android.app.RemoteServiceException(与Bad Notification或Broadcast无关)

我有android.app.RemoteServiceException(RSE),但没有任何消息.我在播放控制台上看到下面的崩溃报告.当我因为不良通知或广播而得到RSE时,我得到了相关的消息,但在这种情况下它是一个黑色的崩溃.

android.app.RemoteServiceException: 
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1813)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6781)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)
Run Code Online (Sandbox Code Playgroud)

我开始主要在Android 7和三星设备上进行这些崩溃(大型)

Android版本和设备

我们遵循通知和广播的标准准则.

Target SDK: 25
Compile SDK: 26
Run Code Online (Sandbox Code Playgroud)

我已经完成了与RemoteServiceException相关的stackoverflow问题,但是无法找到RCA,因此发布了新问题.以下是我检查过的问题,但无法找到RSE的解决方案

android android-7.0-nougat

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

信号5(SIGTRAP),代码1(TRAP_BRKPT)与webview.apk有关

我在Play Console中收到了一些崩溃报告,标题如下:

signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)
webview.apk
Run Code Online (Sandbox Code Playgroud)

以及详细信息:

backtrace:
  native: pc 00000000011a1ed4  /system/app/webview/webview.apk
  native: pc 00000000011e01f8  /system/app/webview/webview.apk
Run Code Online (Sandbox Code Playgroud)

就是这样,没有更多的信息.

重要的是(a)崩溃的数量非常少,因此我的代码必须基本上是健全的,并且(b)报告全部来自Android 7.0设备.

我怎样才能开始解决可能发生坠机的地方?我可以发布一些代码,但它可能无济于事,因为绝大多数设备都没有窒息,无论如何我只是在寻找一些洞察或提示,以便在哪里进一步查看.我无法在我尝试的任何设备上重现此崩溃.

还有一个类似的问题在这里,还没有答案.

android crash-reports android-7.0-nougat google-play-console

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

Android 7.0和7.1 getApplication()ClassCastException

在Developer Console中,我看到很多像这样的堆栈跟踪崩溃

java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
  at android.app.ActivityThread.-wrap14(ActivityThread.java:0)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:154)
  at android.app.ActivityThread.main(ActivityThread.java:6776)
  at java.lang.reflect.Method.invoke(Native Method:0)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: java.lang.ClassCastException: 
  at com.myapp.ui.BaseActivity.getApp(BaseActivity.java:193)
  at com.myapp.ui.BaseActivity.onCreate(BaseActivity.java:275)
  at com.myapp.ui.CastActivity.onCreate(CastActivity.java:39)
  at com.myapp.ui.MainActivity.onCreate(MainActivity.java:268)
  at android.app.Activity.performCreate(Activity.java:6955)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
Run Code Online (Sandbox Code Playgroud)

BaseActivity的getApp方法是

public App getApp() {
        return (App) getApplication();
    }
Run Code Online (Sandbox Code Playgroud)

App类是

public class App extends MultiDexApplication { ...
Run Code Online (Sandbox Code Playgroud)

并且在manifest应用程序标记中包含对此类的引用

 <application
        android:name="com.myapp.App"
Run Code Online (Sandbox Code Playgroud)

98%的崩溃是针对Android 7.0,休息是7.1.没有其他Android版本受到影响.

编辑:我使用proguard所以它可以以某种方式相关但保持类

-keep class com.myapp.** { *;}
-keep interface com.myapp.** { *;}
Run Code Online (Sandbox Code Playgroud)

注意:它可能没有关系,但在相同的Android版本中,它看起来像App的onCreate方法有时不被调用.我观察它是因为在onCreate中创建的某些对象在从Service(由AlarmManager启动)或BroadcastReceiver访问时为null

有谁知道什么可以导致它,如何解决它或解决它?谢谢

编辑2:我最终得到了这样的东西:

   public App getApp() …
Run Code Online (Sandbox Code Playgroud)

android android-7.0-nougat android-application-class

25
推荐指数
2
解决办法
1934
查看次数

Android Api 24找不到来源

我有这个成绩档案:

//ext.support_library_version = '24.0.0'

    android {
        compileSdkVersion 24
        buildToolsVersion '24.0.0'

        defaultConfig {
            applicationId "---"
            minSdkVersion 21
            targetSdkVersion 24
            versionCode 1
            versionName "1.0"
        }
    ...
    }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试打开任何与Android相关的类时,它说我没有api24的来源,即使buildToolsVersion '24.0.0'安装了它.知道为什么吗?

sdk android build-tools android-7.0-nougat

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

如何获取当前区域设置(API级别24)?

我是这样做的:

context.getResources().getConfiguration().locale
Run Code Online (Sandbox Code Playgroud)

Configuration.locale 如果目标是24,则弃用.所以我做了这个改变:

context.getResources().getConfiguration().getLocales().get(0)
Run Code Online (Sandbox Code Playgroud)

现在它说它只有minSdkVersion24,所以我不能使用它因为我的最小目标较低.

什么是正确的方法?

android locale android-7.0-nougat

23
推荐指数
3
解决办法
1万
查看次数

java.lang.SecurityException:不再支持MODE_WORLD_READABLE

例外情况仅发生在Android 7.0 Nougat(模拟器)设备中.

java.lang.SecurityException:不再支持MODE_WORLD_READABLE

我的代码:

public void SessionMaintainence(Context context) {
    this.context = context;
    preferences = context.getSharedPreferences(PREF_NAME, Context.MODE_WORLD_READABLE);
    editor = preferences.edit();
    editor.commit();
}
Run Code Online (Sandbox Code Playgroud)

logcat的:

> E/AndroidRuntime: FATAL EXCEPTION: main
>                                                  Process: burpp.av.feedback, PID: 2796
>                                                  java.lang.RuntimeException: Unable to create application
> burpp.av.feedback.FeedbackApplication: java.lang.SecurityException:
> MODE_WORLD_READABLE no longer supported
>                                                      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5364)
>                                                      at android.app.ActivityThread.-wrap2(ActivityThread.java)
>                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)
>                                                      at android.os.Handler.dispatchMessage(Handler.java:102)
>                                                      at android.os.Looper.loop(Looper.java:154)
>                                                      at android.app.ActivityThread.main(ActivityThread.java:6077)
>                                                      at java.lang.reflect.Method.invoke(Native Method)
>                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
>                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
>                                                   Caused by: java.lang.SecurityException: MODE_WORLD_READABLE …
Run Code Online (Sandbox Code Playgroud)

android android-securityexception android-sharedpreferences android-7.0-nougat

23
推荐指数
1
解决办法
3万
查看次数

如何在Android N多窗口模式下确定正确的设备方向?

多窗口文档:

多窗口模式下禁用的功能

当设备处于多窗口模式时,某些功能被禁用或忽略,因为它们对于可能与其他活动或应用共享设备屏幕的活动没有意义.这些功能包括:

  • 某些系统UI自定义选项已禁用; 例如,如果应用程序未以全屏模式运行,则无法隐藏状态栏.
  • 系统忽略对android:screenOrientation属性的更改.

我得到了大多数应用程序,纵向和横向模式之间的区别是没有意义的,但是我正在使用SDK,其中包含用户可以进行任何活动的摄像机视图 - 包括支持多窗口模式的活动.问题是摄像机视图包含显示摄像机预览的SurfaceView/TextureView,并且为了在所有活动方向上正确显示预览,需要有关正确活动方向的知识,以便可以正确旋转摄像机预览.

问题是我的代码通过检查当前配置方向(纵向或横向)和当前屏幕旋转来计算正确的活动方向.问题是在多窗口模式下,当前配置方向不反映真实的活动方向.这会导致相机预览旋转90度,因为Android报告的配置与方向不同.

我目前的解决方法是检查所请求的活动方向并以此为基础,但有两个问题:

  1. 请求的活动方向不必反映实际的活动方向(即可能仍未满足请求)
  2. 请求的活动方向可以是"后方","传感器","用户"等,它们不会显示有关当前活动方向的任何信息.
  3. 根据文档,在多窗口模式下实际上忽略了屏幕方向,因此1.和2.只是不起作用

即使在多窗口配置中,有没有办法可以稳健地计算正确的活动方向?

这是我目前使用的代码(请参阅有问题的部分的注释):

protected int calculateHostScreenOrientation() {
    int hostScreenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
    WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
    int rotation = getDisplayOrientation(wm);

    boolean activityInPortrait;
    if ( !isInMultiWindowMode() ) {
        activityInPortrait = (mConfigurationOrientation == Configuration.ORIENTATION_PORTRAIT);
    } else {
        // in multi-window mode configuration orientation can be landscape even if activity is actually in portrait and vice versa
        // Try determining from requested orientation (not entirely correct, …
Run Code Online (Sandbox Code Playgroud)

camera android multi-window android-camera android-7.0-nougat

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

IllegalArgumentException:列'_data'不存在

在Nougat中,此功能无效.

String path = getRealPathFromURI(this, getIntent().getParcelableExtra(Intent.EXTRA_STREAM));
Run Code Online (Sandbox Code Playgroud)


public String getRealPathFromURI(Context context, Uri contentUri) {
    Cursor cursor = null;
    try {
        String[] proj = {MediaStore.Images.Media.DATA};
        cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
        if (cursor == null) return contentUri.getPath();
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

崩溃日志:

java.lang.RuntimeException: Unable to start activity ComponentInfo{class path}: java.lang.IllegalArgumentException: column '_data' does not exist
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
   at android.app.ActivityThread.-wrap12(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at …
Run Code Online (Sandbox Code Playgroud)

android android-7.0-nougat android-7.1-nougat

23
推荐指数
3
解决办法
1万
查看次数