标签: android-6.0-marshmallow

Android - 何时创建 SD 卡中的默认文件夹(DCIM、下载等)?

我正在构建一个自定义 Marshmallow Android 版本,我想在第一次启动时向 SD 卡添加一些文件- 具体来说,我希望在创建 DCIM、下载、铃声等的同时创建它们。

默认文件夹结构是何时创建的?

android android-source android-sdcard android-6.0-marshmallow

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

意图服务在打瞌睡模式下不工作

我的一位同行开发人员编写了intent service一个 API 调用,然后休眠 2 分钟。醒来后,它再次发送。

下面是代码:

public class GpsTrackingService extends IntentService {

....

@Override
    protected void onHandleIntent(Intent intent) {
      do{
        try{
          //make API call here

           //then go to sleep for 2 mins
          TimeUnit.SECONDS.sleep(120);
       
        } catch(InterruptedException ex){
            ex.printStackTrace();
        }
      } while (preferences.shouldSendGps()); //till the user can send gps.

    }

....

}


Manifest

<service android:name=".commons.GpsTrackingService" />
Run Code Online (Sandbox Code Playgroud)

当手机处于活动状态时,这工作正常。但是,每当手机进入打瞌睡模式时,它都无法唤醒。

使用报警管理器会WAKE permission解决这个问题吗?

我刚刚获得了代码库,需要在今天内解决这个问题。如果有人可以提供帮助,那就太好了。

android android-intentservice android-6.0-marshmallow android-doze

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

XAMARIN C# Android:权限:API 23 方法和常量是否已实现?

我需要将 WindowManager 与 WindowManagerTypes.SystemOverlay 参数一起使用

在我的项目上启用了此权限

但它是 API < 23 的参数

我使用 API 23 (Android 6.0) 开发

我需要在我的 Android 测试手机的设置 => 应用程序 => 应用程序管理器设置中启用参数“绘制其他应用程序”

我在 Xamarin 中找不到:Settings.ActionManageOverlayPermission 和 Settings.CanDrawOverlays 函数,它是否已实现?

此元素是从 Xamarin.Android 版本 5.1.99 添加的(请参阅下面的链接):

https://developer.xamarin.com/releases/android/xamarin.android_5/xamarin.android_5.1.99/level_23_diff/mono.android.dll/

但我不能使用元素。

我使用 java 代码来解释实现问题(见下文),我想做这段代码,但当然是在 C# 中。

爪哇代码

public static int ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE= 5469;

public void testPermission() {
    if (!Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE);
    }
}
Result :

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if …
Run Code Online (Sandbox Code Playgroud)

permissions overlay android-windowmanager xamarin android-6.0-marshmallow

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

无法在 Android(在 MarshMallow 及更高版本上)设备中创建目录

我正在尝试使用以下代码在我的 SD 卡上创建一个文件夹,但它失败了。这是我写的代码onCreate()

File test = new File(Environment.getExternalStorageDirectory(),"my_directory");
if(!test.exists())
{
    try 
    {
        if (test.mkdir()) 
        {
            Log.d("xxx", "directory created");
        } 
        else 
        {
             Log.d("xxx", "directory creation failed");
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
else
{
    Log.d("xxx","directory already present");
}
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时没有给出任何异常,它只是打印 directory creation failed日志。

我也给予了以下许可,

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我用的是小米红米note 3,安卓版本是6.0.1。

android android-permissions android-6.0-marshmallow

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

由于 Android 消息“查看全屏,要退出,从顶部向下滑动”,Espresso 测试失败

我有一个浓缩咖啡测试,由于出现 Android 弹出消息而失败Viewing full screen. To exit, swipe down from the top

如果我单击Got it测试运行正常,但我在构建服务器上运行这些测试,我无法手动单击它。

我正在运行的模拟器设备 - Nexus 7 API 23。

有没有一种方法可以禁用此弹出窗口,或者在测试期间单击它,但我不确定它会在什么时候弹出。

关于如何处理这个问题的任何想法请。

这是 Android 抛出的弹出窗口,它破坏了 espresso 测试

在此输入图像描述

因此,我确实收到一条错误消息,如下所示

此行错误 -

 onView(withId(R.id.prefuel_total))
                .perform(typeText(value), closeSoftKeyboard());

    androidx.test.espresso.PerformException: Error performing 'single click - At Coordinates: 1067, 321 and precision: 16, 16' on view 'Animations or transitions are enabled on the target device.
For more info check:

with id: com.ix.xx.staging:id/prefuel_total'.
at androidx.test.espresso.PerformException$Builder.build(PerformException.java:82)
at androidx.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:79)
at androidx.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:51)
at androidx.test.espresso.ViewInteraction.waitForAndHandleInteractionResults(ViewInteraction.java:312)
at androidx.test.espresso.ViewInteraction.desugaredPerform(ViewInteraction.java:173)
at …
Run Code Online (Sandbox Code Playgroud)

java android kotlin android-espresso android-6.0-marshmallow

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

Android 6撤销了已批准的权限

有问题的帽子我不确定是不是一个bug.

如果用户授予权限然后撤消它,则checkSelfPermission似乎会对撤销的权限返回GRANTED.

例如,撤销许可后似乎.CAMERA:

true == ActivityCompat.checkSelfPermission(context, permission.CAMERA)
                            == PackageManager.PERMISSION_GRANTED
Run Code Online (Sandbox Code Playgroud)

我似乎发现相机被撤销的唯一方法是例外:

10-20 14:25:54.330: E/AndroidRuntime(13954): java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity clip={text/uri-list U:file:///storage/emulated/0/Pictures/JPEG_20151020_142554_399504353.jpg} (has extras) } from ProcessRecord{adc5d77 13954:com.conx2share.conx2share.staging/u0a144} (pid=13954, uid=10144) with revoked permission android.permission.CAMERA
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.os.Parcel.readException(Parcel.java:1599)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.os.Parcel.readException(Parcel.java:1552)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2658)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1507)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.app.Activity.startActivityForResult(Activity.java:3917)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.app.Activity.startActivityForResult(Activity.java:3877)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:855)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:907)
10-20 14:25:54.330: E/AndroidRuntime(13954):    at …
Run Code Online (Sandbox Code Playgroud)

permissions android android-6.0-marshmallow

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

CheckSelfPermission始终返回权限被拒绝

在Android M(Android 6)中,我正在使用该方法ActivityCompat.checkSelfPermission().

即使我在应用程序设置中手动启用了请求的权限,此方法的结果始终是"权限被拒绝".

这可能是什么原因?

  int smsPermission = ActivityCompat.checkSelfPermission(AuthActivity.this, Manifest.permission_group.SMS);

  if (smsPermission != PackageManager.PERMISSION_GRANTED) 
  {
      dialog.setCancelable(false);
      dialog.setMessage("dialog content");
      dialog.setPositiveButton("OK", new DialogInterface.OnClickListener()
      {
          @Override
          public void onClick(DialogInterface dialogInterface, int i)
          {
             ActivityCompat.requestPermissions(AuthActivity.this, new String[]{Manifest.permission.SEND_SMS}, Constants.REQUEST_SMS_PERMISSION);
             dialogInterface.dismiss();
          }
       });
       dialog.show();
   }
Run Code Online (Sandbox Code Playgroud)

android android-6.0-marshmallow runtime-permissions

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

无法使用棉花糖连接到设备进行无线调试。出现(10061)错误

我正在尝试使用棉花糖连接到Android设备以进行无线调试。

C:\...\sdk\platform-tools>adb connect 192.168.1.103:5555  
unable to connect to 192.168.1.103:5555: cannot connect to 192.168.1.103:5555: 
    No connection could be made because the target machine actively refused it. (10061)
Run Code Online (Sandbox Code Playgroud)

我也尝试过adb connect "192.168.1.103:5556""adb connect 192.168.1.103"但最终得到了相同的结果。

上面的第一个命令在棉花糖更新之前在我的OnePlus 2上运行正常。

对如何在棉花糖上进行无线调试有帮助吗?

android adb android-6.0-marshmallow

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

在Marshmallow中运行时请求权限组位置的正确方法是什么?

我试图让一个测试应用程序,所以我可以玩的的LocationManager,但我甚至无法获得通过在运行时的新愚蠢的权限请求.我做错了什么,为什么他们这么混乱/复杂?

public class MainActivity extends AppCompatActivity {

    private static final int LOCATION_GROUP_PERMISSION_REQUEST = 1;
    private boolean locationPermissionGranted = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getLocationPermission();

        if(locationPermissionGranted) {
            LocationManager locationManager =
                    (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            String provider = LocationManager.GPS_PROVIDER;
            try {
                Location location = locationManager.getLastKnownLocation(provider);
                updateTextView(location);
            } catch(SecurityException e) {
                Log.e("PERMISSION_DENIED", e.getMessage());
            }
        }

        //registerReceiver(gpsReciever, new IntentFilter("android.location.PROVIDERS_CHANGED"));
    }

    private void updateTextView(Location location) {
        Double latitude = location.getLatitude();
        Double longitude = location.getLongitude();
        TextView view = (TextView) findViewById(R.id.textView);
        view.setText(getString(R.string.lat_long_string, latitude, longitude));
    } …
Run Code Online (Sandbox Code Playgroud)

android android-permissions android-6.0-marshmallow

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

Android JobScheduler作业未运行

我的混合式Cordova Android应用程序使用一个自定义插件,在该插件中,我大约每30分钟执行一次后台工作。到现在为止,我已经使用AlarmMangersetInexact报警执行工作。我对该路由唯一真正的问题是,警报无法在重新启动后幸免。鉴于我现在只支持Android的6(API 23)+设备现在我与更换试验AlarmManagerJobScheduler。到目前为止,我的努力如下所示

public class UnyService extends JobService 
{

 @Override
 public boolean onStartJob(JobParameters params) 
 {
  UnyHandler.sendMessage(Message.obtain(UnyHandler,1,params));
  return true;
 }

 @Override
 public boolean onStopJob(JobParameters params)
 {
  UnyHandler.removeMessages(1);
  return false;
 }
Run Code Online (Sandbox Code Playgroud)

我正在使用Handler来执行实际工作。的代码Handler如下所示

 private Handler UnyHandler = new Handler(new Handler.Callback()
 {
  @Override
  public boolean handleMessage(Message msg)
  {
   Feedback.postBackInfo("Handled it!");
   jobFinished((JobParameters)msg.obj,false);
   return true;
  }

  });
Run Code Online (Sandbox Code Playgroud)

然后,我使用以下代码启动并运行该作业

private void launchTimerJob()
{
 timerJob = 
 (JobScheduler)context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
 JobInfo.Builder builder = new JobInfo.Builder(1,new 
 ComponentName(Utils.packName,UnyService.class.getName()));

 builder.setPeriodic(30000);
 builder.setPersisted(true);
 builder.setBackoffCriteria(30000,JobInfo.BACKOFF_POLICY_LINEAR); …
Run Code Online (Sandbox Code Playgroud)

job-scheduling android-6.0-marshmallow

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

在Marhsmallow 6.0.1中Integer.parseInt()说"invalid int",它在Pre-Marshamallow版本中完美运行

我非常清楚我在这里解析为Integer的值是Long值.

问题是:为什么它在Pre-Marshmallow工作?

这是我的代码:

public void print(long mili) {
    Long serverUptimeSeconds =
            (mili - System.currentTimeMillis()) / 1000;


    String serverUptimeText =
            String.format("%02d%02d%02d%02d",
                    Math.abs(serverUptimeSeconds) / 86400,
                    (Math.abs(serverUptimeSeconds) % 86400) / 3600,
                    ((Math.abs(serverUptimeSeconds) % 86400) % 3600) / 60,
                    ((Math.abs(serverUptimeSeconds) % 86400) % 3600) % 60
            );

        // compiler is giving error at this line in Marshmallow 6.0.1 only
        tv.setValue(Integer.parseInt(serverUptimeText), false);

}
Run Code Online (Sandbox Code Playgroud)

我的职责:

public void setValue(int value, boolean withAnimation) {

    mCurrentValue = value;
    int tempValue = value;

    for (int …
Run Code Online (Sandbox Code Playgroud)

java android integer android-6.0-marshmallow

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