2つのプロジェクトあります。一つは、以下のようなこの確認のために新たに作ったプロジェクトです。
元々のプロジェクトで「ACCESS_FINE_LOCATION」が許可されないため、確認用に以下で新規にプロジェクトを作成しました。
(プロジェクトで利用しているバージョンなどがわかるため、記載させて頂きます。)
ファイルの内容も必要最小限にし、元々のプロジェクトも全てのActivityを削除して、
共通ファイルやMainActivityのみで全く同じにしても、結果が異なり、元々のプロジェクトが「ACCESS_FINE_LOCATION」が許可されず、新プロジェクトは「ACCESS_FINE_LOCATION」が許可されました。
基本的に、同じ内容にしたファイルは以下の通りです。
【共通系】
・build.gradle(app)
・build.gradle(project)
・gradle-wrapper.properties
・proguard-rules.pro
・gradle.properties
・settings.gradle
・local.properties
・Manifest.xml
【Activity】
・ManActivity.java
・activity_main.xml
app_idは当然ですが異なっていますが、それ以外は基本的に合わせています。
2つのプロジェクトで同じにした内容を以下に共有します。
build.gradle(app)
1apply plugin: 'com.android.application' 2check.dependsOn 'assembleMinSdkIcsDebugAndroidTest' 3 4android { 5 compileSdkVersion 30 6 buildToolsVersion '30.0.2' 7 flavorDimensions "minSdkVersion" 8 defaultConfig { 9 applicationId "com.xxxxxx.testgetssid" 10 minSdkVersion 21 11 targetSdkVersion 30 12 versionCode 59 13 versionName "5.9(359)" 14 testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner' 15 } 16 buildTypes { 17 release { 18 minifyEnabled true 19 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 20 } 21 } 22 lintOptions { 23 abortOnError false 24 } 25 productFlavors { 26 minSdkIcs { 27 dimension "minSdkVersion" 28 minSdkVersion 21 29 } 30 } 31} 32 33dependencies { 34 implementation 'com.android.support:design:28.0.0' 35 implementation 'com.android.support.constraint:constraint-layout:1.0.2' 36}
build.gradle(testGetSSID)
1buildscript { 2 repositories { 3 mavenCentral() 4 google() 5 } 6 dependencies { 7 classpath 'com.android.tools.build:gradle:4.2.0' 8 } 9} 10 11allprojects { 12 repositories { 13 google() 14 } 15} 16 17task clean(type: Delete) { 18 delete rootProject.buildDir 19}
XML【AndroidManifest.xml】
1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.xxxxxxxx.testgetssid"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:roundIcon="@mipmap/ic_launcher_round" 10 android:supportsRtl="true" 11 android:theme="@style/Theme.TestGetSSID"> 12 13 <activity android:name=".MainActivity"> 14 <intent-filter> 15 <action android:name="android.intent.action.MAIN" /> 16 <category android:name="android.intent.category.LAUNCHER" /> 17 </intent-filter> 18 </activity> 19 20 <activity 21 android:name=".NextActivity" /> 22 </application> 23 24 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 25 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 26 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 27 <uses-permission android:name="android.permission.INTERNET" /> 28 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 29 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 30 31</manifest>
Java【MainActivity.java(抜粋)】
1public class MainActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 WifiManager wmanager = (WifiManager)getApplicationContext().getSystemService(WIFI_SERVICE); 9 WifiInfo winfo = wmanager.getConnectionInfo(); 10 11 TextView dispErrTxtView = (TextView) findViewById(R.id.textView1); 12 // *************************** For Debug *************************** 13 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 14 Log.d("SSID00000_OK:", winfo.getSSID()); 15 } else { 16 Log.d("SSID00000_NG:",winfo.getSSID()); 17 } 18 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 19 Log.d("SSID111111_OK:", winfo.getSSID()); 20 } else { 21 Log.d("SSID111111_NG:",winfo.getSSID()); 22 } 23 if (wmanager.isWifiEnabled()) { 24 if (winfo != null) { 25 Log.d("SSID22222",winfo.getSSID()); 26 } 27 } 28 String tempSSID = winfo.getSSID(); 29 dispErrTxtView.setText("DEBUG:" + tempSSID); 30 Log.d("wifiInfo", winfo.toString()); 31 Log.d("SSID33333",winfo.getSSID()); 32 }
うまくいく場合は、SSID00000_OKになっていて、うまく行かない場合はSSID00000_NGが出力されるため、
「ACCESS_FINE_LOCATION」の許可が通っていないようです。
「ACCESS_COARSE_LOCATION」はどちらのプロジェクトも問題なく、SSID111111_OKが出力されます。
何かのチェックで引っ掛かっているようですが、新規プロジェクトと使いたいプロジェクトの差分が見当たりません。
何度調べてもわからず困ってます。
何か他に共通設定など、チャックしないといけないような事など確認した方が良いと思われる内容は何でもコメントをお願いします。

回答1件
あなたの回答
tips
プレビュー