标签: android-7.0-nougat

运行Java 8的无限Gradle构建

我尝试从Java 7迁移到Java 8,所以我已经为Android N和所有工具安装了新的sdk.我按照开发者指南在android studio中使用Java 8,但是当我尝试编译apk时,我有一个无限的Gradle Build Running ..我已经尝试重启Android Studio,但是1小时后,Gradle Build运行它还没有完成.在Windows任务管理器中,我看到进程java.exe需要大量内存,CPU占90%.

有人已经遇到过这个问题吗?

谢谢.

编辑:

我有以下版本:

Java version : 1.8.0_92
Gradle version : 2.1.2
Android Studio version : 2.1.2

compileSdkVersion : 24
buildToolsVersion : 24

targetSdkVersion : 24
Run Code Online (Sandbox Code Playgroud)

EDIT2:

我尝试使用Android Studio 2.2并在开始构建后5分钟,我有这个错误:

Error:Execution failed for task ':app:compileProductionDebugJavaWithJack'. 
> java.lang.RuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded
Run Code Online (Sandbox Code Playgroud)

android gradle java-8 android-studio android-7.0-nougat

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

Android Nougat clipPath在动画期间无法正常工作

我建立了我的画布圆形夹路径,我有一列数字是在画布上的动画,所以我看到的数字在截取的部分动画和动画出来.这是剪辑的代码:

mClipPath.addCircle((w / 2f), (h / 2f), radius, Path.Direction.CW); 
canvas.clipPath(mClipPath, Region.Op.INTERSECT);
Run Code Online (Sandbox Code Playgroud)

如您所见,0表示动画,1表示动画(右侧的数字). 在此输入图像描述

但在某些情况下,剪辑在动画期间不会正确发生(左边的3和4).

在此输入图像描述

这只发生在牛轧糖上.

animation android clip android-7.0-nougat

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

如何在Google Play Console中限制特定Android版本的应用

我有一个较旧的应用程序,使用新的Android 7.0在设备上出错.

该应用程序已发布,我无法实际更新该应用程序.

如何在Google Play控制台中限制特定Android版本的应用?

android publishing google-play-developer-api android-7.0-nougat

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

未触发Android Nougat PhoneStateListener

在Android(目标25)中,我有一个后台服务,在onCreate函数中,我初始化了一个手机状态监听器.它适用于Nougat之前的Android版本,但在Nougat中它不起作用,即使权限被授予.

public class Service extends IntentService
{
    class PhoneListener extends PhoneStateListener
    {
       String TAG = getClass().getName();
       @Override
       public void onCallStateChanged(int state, String incomingNumber) 
       {
           super.onCallStateChanged(state, incomingNumber);
           switch (state)
           {
               case TelephonyManager.CALL_STATE_IDLE:
                Log.d(TAG,"IDLE" );
               break;
               case TelephonyManager.CALL_STATE_OFFHOOK:
                Log.d(TAG,"OFFHOOK");
               break;
               case TelephonyManager.CALL_STATE_RINGING:
                Log.d(TAG,"RINGING");
               break;
           }
       }
   }

   public Service ()
   {
       super("ChatService");
   }
   public Service(String name)
   {
       super(name);
   }

   @Override
   public void onCreate()
   {
       super.onCreate();
       TelephonyManager tm = (TelephonyManager)getApplicationContext().getSystemService(TELEPHONY_SERVICE);
       PhoneListener listener = new PhoneListener();
       tm.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
   }
}
Run Code Online (Sandbox Code Playgroud)

我不知道是什么问题,看起来电话管理器没有注册,因此没有触发onCallStateChanged.我的猜测之一是在Android M上引入的Doze功能,但仍然......即使手机未找到"工作中",此代码在Android 6上运行正常

android telephonymanager android-doze android-7.0-nougat android-7.1-nougat

5
推荐指数
2
解决办法
2126
查看次数

Android 7.0+上的WebView无法呈现页面

我有带许可证的WebView屏幕.一切都运行良好,直到用户通知我在Android 7+设备上没有显示任何内容.

public class DefaultWebActivity extends AppCompatActivity {

WebView mWebView;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.default_web);
    mWebView = (WebView) findViewById(R.id.web_view);
    mWebView.setWebChromeClient(new WebChromeClient());
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setWebViewClient(new WebViewClient() {

        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Log.w("WebActivity", "Error loading page " + description);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            return true;
        }
    });
    mWebView.loadUrl("https://google.com/");
}

@Override
protected void onPause() {
    super.onPause();
    mWebView.onPause();
}

@Override
protected void onResume() {
    super.onResume();
    mWebView.onResume();
}
Run Code Online (Sandbox Code Playgroud)

}

我可以看到它加载了一些东西(google …

android webview chromium android-7.0-nougat

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

如何从静态快捷方式启动活动的现有实例

我的应用程序中有一个Activity(MainActivity),并且有一个静态快捷方式(指向TempActivity)。

由于静态快捷方式将始终具有FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TASK设置,因此我创建了TempActivity,这是一个不可见的Activity,即它将启动MainActivity,然后调用finish()。而且,如开发人员文档中所建议,SecondActivity 在应用程序的AndroidManifest.xml文件中具有android:taskAffinity =“”

MainActivity具有android:launchMode =“ singleTop”

即使执行了此操作,MainActivity仍会在新任务中启动,而不是在从主屏幕启动时创建的现有任务中启动。

AndroidManifest.xml

<activity
            android:name=".MainActivity"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.shortcuts"
                android:resource="@xml/shortcuts" />
        </activity>
        <activity android:name=".TempActivity" android:taskAffinity=""></activity>
Run Code Online (Sandbox Code Playgroud)

捷径

<shortcut
        android:enabled="true"
        android:icon="@drawable/icon"
        android:shortcutDisabledMessage="@string/app_name"
        android:shortcutId="static"
        android:shortcutLongLabel="@string/app_name"
        android:shortcutShortLabel="@string/app_name">
    <intent
        android:action="custom"
        android:targetClass="com.example.mobile.appshortcut.TempActivity"
        android:targetPackage="com.example.mobile.appshortcut" />
    </shortcut>
Run Code Online (Sandbox Code Playgroud)

TempActivity.java

public class TempActivity extends AppCompatActivity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main2);
    //Intent intent = getIntent(); // From Shortcut
    Intent intent = new Intent(); // For Testing
    intent.setClass(this,MainActivity.class);
    startActivity(intent);
    finish();
}

@Override
protected void …
Run Code Online (Sandbox Code Playgroud)

android android-7.0-nougat android-appshortcut

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

如何检测设备何时进入Android N的多窗口模式

当用户切换到多窗口模式时,我想从后台服务获得通知。除了流程中涉及的活动之外,是否有其他方法可以通过服务获取此信息。

我还注意到,当在前景窗口的区域上单击覆盖时,它会自动切换到该区域下的活动。可以预防吗?

service android overlay multi-window android-7.0-nougat

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

在Nougat上打开PDF

我有一个文件路径:file:///storage/emulated/0/Android/data/rocks.v d.*****.develop/files/1Q 2017财务结果.pdf

这是代码:

Intent intent = new Intent(Intent.ACTION_VIEW);
    try {
        String newFilePath = filePath.replaceAll("%20", " ");
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
            intent.setDataAndType(Uri.parse(newFilePath), "application/pdf");
        } else {
            Uri uri = Uri.parse(newFilePath);
            File file = new File(uri.getPath());
            if (file.exists()){
                uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file);
                intent.setDataAndType(uri, "application/pdf");
                intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            }
        }

        intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我的uri = content://rocks.v d.*****.develop.provider/files/Android/data/rocks.v d.*****.develop/files/1Q%202017%20financial%20results .PDF

Pdf阅读器打开时出现意外错误.怎么了?

pdf android android-7.0-nougat

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

打瞌睡,棉花糖和牛轧糖之间有所不同

目前我在关于Android 7.0的官方谷歌doc新闻中阅读
我无法理解一些事情.当用户屏蔽屏幕时,他们写了Doze通过关闭网络和CPU来改善电池寿命.但这是如何工作的?

1.我的设备中有Marshmallow,当我的手机被阻止时,我仍然会收到来自网络应用程序的通知(例如Messenger).

他们写Nougat的第二件事再次通过CPU和网络改进了这一点.那么什么是不同的?

android android-6.0-marshmallow android-7.0-nougat

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

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