Android请求权限时GrantPermissionsViewModel报包未找到错误排查
Android权限申请报错:Package com.blackholeofphotography.ble not found
在Android应用中请求蓝牙权限时,底层GrantPermissionsViewModel输出错误日志**"Package com.blackholeofphotography.ble not found"**,权限申请弹窗无法弹出。推测弹窗问题是该错误的连锁反应,需先解决包找不到的问题。
怀疑是XML或Gradle配置缺失,但无法定位具体项,已通过Stack Overflow和DuckDuckGo搜索未获有效线索。
尝试过ActivityCompat.requestPermissions和ActivityResultLauncher两种权限申请方式,结果一致。错误来自GrantPermissionsViewModel.kt第284行,原因是packageInfoLiveData为空或未加载,但包名确认正确,疑惑是否因为是调试版本未通过Play商店分发导致。
已将问题简化为仅含一个按钮的测试应用,相关代码如下:
MainActivity.java
package com.blackholeofphotography.ble; import static android.Manifest.permission.BLUETOOTH; import android.content.pm.PackageManager; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; public class MainActivity extends AppCompatActivity { @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); Log.d ("ble", "onCreate"); EdgeToEdge.enable (this); setContentView (R.layout.activity_main); ViewCompat.setOnApplyWindowInsetsListener (findViewById (R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets (WindowInsetsCompat.Type.systemBars ()); v.setPadding (systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); final Button button = findViewById (R.id.button); button.setOnClickListener (new View.OnClickListener () { @Override public void onClick (View v) { Log.d ("ble", "onClick"); if (ActivityCompat.checkSelfPermission (getApplicationContext (), BLUETOOTH) != PackageManager.PERMISSION_GRANTED) { Log.i ("ble", "requestPermissions"); ActivityCompat.requestPermissions (MainActivity.this, new String[] { BLUETOOTH }, 0); } else { Log.i ("ble", "Permission Granted"); } } }); } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.blackholeofphotography.ble"> <permission android:name="${applicationId}.SERVICE_PERMISSION" android:protectionLevel="signature" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Ble" tools:targetApi="31"> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/get_permission" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
Logcat输出
37ms; Flags=1, IntendedVsync=470552223679335, Vsync=470552690345983, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=470552703616344, AnimationStart=470552703624417, PerformTraversalsStart=470552703914678, DrawStart=470552864200058, SyncQueued=470552883176102, SyncStart=470552883646050, IssueDrawCommandsStart=470552883719435, SwapBuffers=470553059778359, FrameCompleted=470553061297526, DequeueBufferDuration=166302, QueueBufferDuration=502708, GpuCompleted=-486371034539139072, 2025-04-01 18:44:52.613 10691-10691 ble com.blackholeofphotography.ble D onClick 2025-04-01 18:44:52.613 10691-10691 ble com.blackholeofphotography.ble I requestPermissions 2025-04-01 18:44:52.873 26063-26063 GrantPermi...sViewModel com....android.permissioncontroller E Package com.blackholeofphotography.ble not found
(这种时候真让我怀念用穿孔卡编程的日子)
内容的提问来源于stack exchange,提问作者PhotoKevin
相关产品推荐
相关产品推荐

