小编Use*_*902的帖子

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

如何检索CountryCode/ISO?

我们的目的是根据位置过滤内容,而无需从Android设备请求位置权限,

为了满足这一要求,我们尝试了以下选项,但仍然不可靠

  1. 电话经理

如果没有Sim卡,它就无法工作,再次说如果来自美国的用户现在去印度,下面的片段会返回美国而不是印度

var telephonyManager = context?.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
val countryCodeValue = telephonyManager.networkCountryIso
Run Code Online (Sandbox Code Playgroud)
  1. 语言环境

默认情况下,Locale默认返回US或UK,即使它们位于印度,通常用户的Locale默认为英文

 Locale.getDefault().getCountry()
Run Code Online (Sandbox Code Playgroud)
  1. 全球定位系统

我们不希望请求位置权限

  1. 从登录的Google帐户中检索国家/地区详细信息

来自Google的回复 - 他们没有任何专用的API来检索用户的countryCode注意:iOS有一个专用的API告诉CountryCode用户,但Android没有

  1. IP地址

我们试图获得Android设备的IP(来自几个IP融合网站),有以下两种情况

  • 用户连接到WiFi - 我们可以获得countryCode(WIFI IP:64.134.234.17)
  • 用户连接到移动数据 - 即使我们在美国,我们也得到了错误的countryCode,它说IP来自JAPAN(移动网络IP:210.253.218.106)

注意: 即使Netflix在启动期间确定国家/地区,也不会请求位置权限

android location in-app-purchase in-app-billing kotlin

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

Android和Java内部类概念

我按照http://developer.android.com/reference/android/app/AlertDialog.html链接,我尝试创建这样的新AlertDialog

AlertDialog myAlertDialog = new AlertDialog.Builder(MainActivity.this).create();
Run Code Online (Sandbox Code Playgroud)

根据文档,AlerDialog是外部类,Builder是AlertDialog中的内部类.现在我在访问内部类时使用java链接相同的概念,这样Outer myOuter2 = new Outer.Inner();当我尝试访问时这段错误,这里是完整的java代码

package com.test;

    public class Outer {
        public void OuterMethod() {
            System.out.println("OuterMethod");
        }

        public static void main(String[] args) {
            Outer myOuter = new Outer();

            myOuter.OuterMethod();
            Outer myOuter2 = new Outer.Inner();//this piece of code gives error

        }

        class Inner {

            Inner() {
                System.out.println("constructor Inner");
            }

            public void InnerMethod() {
                System.out.println("Inside InnerMethod");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以我在这里的问题是如何在android中理解相同的内部类概念并访问其中的方法

java android nested-class inner-classes

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

在java的线程概念中同步

当我尝试执行这段代码时,我得到的输出就像12221121212121221212.当我声明方法时synchronized,它不应该允许其他线程接管控件

package com.test;

public class TestProject extends Thread {

    public void run() {
        synchronized (this) {
            for (int i = 0; i < 10; i++) {
                System.out.print(getName());
            }
        }
    }

    public static void main(String[] args) throws InterruptedException {
        TestProject myProject = new TestProject();
        TestProject myProject1 = new TestProject();
        myProject.setName("1");
        myProject1.setName("2");
        myProject.start();
        myProacject1.start();
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,如何更改代码以获得顺序格式的输出1111111111222222222222222222221111111111

java multithreading synchronized

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