自从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
我最近将我的Nexus 9平板电脑更新为Android 7 Nougat.
从那时起,Eclipse中的Logcat视图停止显示Logcat消息,视图保持为空.
设备目标也显示为"未知".如果我在Eclipse外部启动Logcat(AndroidSDK-> tools-> ddms),它会显示所有消息.但是,"应用程序"列保持为空.
关于这个主题已经有一些(较旧的)问题在这里,但这里没有一个解决方案适合我.
我尝试了什么:
Android SDK中每个安装的软件包都是最新的,我使用最新的Eclipse + ADT插件.
我的Galaxy S5 Mini(Android 5.1.1)也能正常运行.
我知道,ADT-Plugin已被弃用,我们应该使用Android Studio.
但是我仍然尽可能地使用Eclipse,所以我正在寻找这个问题的解决方案.
那么有谁知道如何解决这个问题?
我有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和三星设备上进行这些崩溃(大型)
我们遵循通知和广播的标准准则.
Target SDK: 25
Compile SDK: 26
Run Code Online (Sandbox Code Playgroud)
我已经完成了与RemoteServiceException相关的stackoverflow问题,但是无法找到RCA,因此发布了新问题.以下是我检查过的问题,但无法找到RSE的解决方案
我在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
在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) 我有这个成绩档案:
//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'安装了它.知道为什么吗?
我是这样做的:
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 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
从多窗口文档:
多窗口模式下禁用的功能
当设备处于多窗口模式时,某些功能被禁用或忽略,因为它们对于可能与其他活动或应用共享设备屏幕的活动没有意义.这些功能包括:
- 某些系统UI自定义选项已禁用; 例如,如果应用程序未以全屏模式运行,则无法隐藏状态栏.
- 系统忽略对android:screenOrientation属性的更改.
我得到了大多数应用程序,纵向和横向模式之间的区别是没有意义的,但是我正在使用SDK,其中包含用户可以进行任何活动的摄像机视图 - 包括支持多窗口模式的活动.问题是摄像机视图包含显示摄像机预览的SurfaceView/TextureView,并且为了在所有活动方向上正确显示预览,需要有关正确活动方向的知识,以便可以正确旋转摄像机预览.
问题是我的代码通过检查当前配置方向(纵向或横向)和当前屏幕旋转来计算正确的活动方向.问题是在多窗口模式下,当前配置方向不反映真实的活动方向.这会导致相机预览旋转90度,因为Android报告的配置与方向不同.
我目前的解决方法是检查所请求的活动方向并以此为基础,但有两个问题:
即使在多窗口配置中,有没有办法可以稳健地计算正确的活动方向?
这是我目前使用的代码(请参阅有问题的部分的注释):
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
在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 ×10
adt ×1
build-tools ×1
camera ×1
eclipse ×1
filesystems ×1
locale ×1
logcat ×1
multi-window ×1
sdk ×1