我的安卓工作室应用程序在模拟器上成功运行,但在我真正的安卓智能手机上没有



Logcat错误为

2020-09-21 11:48:30.710 4698-4698/rishabh.example.aimusicplayer E/AndroidRuntime: FATAL EXCEPTION: main
Process: rishabh.example.aimusicplayer, PID: 4698
java.lang.RuntimeException: Unable to start activity ComponentInfo{rishabh.example.aimusicplayer/rishabh.example.aimusicplayer.MainActivity}: java.lang.NullPointerException: Attempt to get length of null array
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3307)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3446)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2043)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7550)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Caused by: java.lang.NullPointerException: Attempt to get length of null array
at rishabh.example.aimusicplayer.MainActivity.readOnlyAudioSongs(MainActivity.java:66)
at rishabh.example.aimusicplayer.MainActivity.displayAudioSongsName(MainActivity.java:86)
at rishabh.example.aimusicplayer.MainActivity.access$000(MainActivity.java:21)
at rishabh.example.aimusicplayer.MainActivity$1.onPermissionGranted(MainActivity.java:43)
at com.karumi.dexter.MultiplePermissionsListenerToPermissionListenerAdapter.onPermissionsChecked(Unknown Source:35)
at com.karumi.dexter.DexterInstance$1.run(Unknown Source:43)
at com.karumi.dexter.MainThread.execute(Unknown Source:6)
at com.karumi.dexter.DexterInstance.checkMultiplePermissions(Unknown Source:71)
at com.karumi.dexter.DexterInstance.checkPermissions(Unknown Source:0)
at com.karumi.dexter.Dexter.check(Unknown Source:10)
at rishabh.example.aimusicplayer.MainActivity.appExternalStoragePermission(MainActivity.java:57)
at rishabh.example.aimusicplayer.MainActivity.onCreate(MainActivity.java:33)
at android.app.Activity.performCreate(Activity.java:7893)
at android.app.Activity.performCreate(Activity.java:7880)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3282)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3446) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2043) 
at android.os.Handler.dispatchMessage(Handler.java:107) 
at android.os.Looper.loop(Looper.java:224) 
at android.app.ActivityThread.main(ActivityThread.java:7550) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 
2020-09-21 11:48:30.723 4698-4698/rishabh.example.aimusicplayer I/Process: Sending signal. PID: 4698 SIG: 9

我的主要活动代码是

package rishabh.example.aimusicplayer;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.os.Bundle;
import android.os.Environment;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;
import java.io.File;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity
{
private String[] itemsAll;
private ListView mSongsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSongsList = findViewById(R.id.songsList);
appExternalStoragePermission();
}
public void appExternalStoragePermission() {
Dexter.withContext(this)
.withPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
.withListener(new PermissionListener() {
@Override
public void onPermissionGranted(PermissionGrantedResponse response)
{
displayAudioSongsName();
}
@Override
public void onPermissionDenied(PermissionDeniedResponse response)
{
}
@Override
public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token)
{
token.continuePermissionRequest();
}
}).check();
}
public ArrayList<File> readOnlyAudioSongs(File file)
{
ArrayList<File> arrayList = new ArrayList<>();
File[] allFiles = file.listFiles();
for (File individualFile : allFiles)
{
if (individualFile.isDirectory() && !individualFile.isHidden())
{
arrayList.addAll(readOnlyAudioSongs(individualFile));
}
else
{
if (individualFile.getName().endsWith(".mp3") || individualFile.getName().endsWith(".aac") || individualFile.getName().endsWith(".wav") || individualFile.getName().endsWith(".wma"))
{
arrayList.add(individualFile);
}
}
}
return arrayList;
}
private void displayAudioSongsName()
{
final ArrayList<File> audioSongs = readOnlyAudioSongs(Environment.getExternalStorageDirectory());
itemsAll = new String[audioSongs.size()];
for (int songCounter=0; songCounter<audioSongs.size(); songCounter++)
{
itemsAll[songCounter] = audioSongs.get(songCounter).getName();
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, itemsAll);
mSongsList.setAdapter(arrayAdapter);
}
}

我的构建等级是

apply plugin: 'com.android.application'
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "rishabh.example.aimusicplayer"
minSdkVersion 19
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'com.karumi:dexter:6.2.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

我的舱单代码是

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="rishabh.example.aimusicplayer">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SmartPlayerActivity">
</activity>
</application>
</manifest>

更新此方法!

private void displayAudioSongsName() {
final ArrayList<File> audioSongs = readOnlyAudioSongs(Environment.getExternalStorageDirectory());
if (audioSongs != null) {
itemsAll = new String[audioSongs.size()];
for (int songCounter = 0; songCounter < audioSongs.size(); songCounter++) {
itemsAll[songCounter] = audioSongs.get(songCounter).getName();
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, itemsAll);
mSongsList.setAdapter(arrayAdapter);
} else Toast.makeText(this, "audio songs list is null!", Toast.LENGTH_SHORT).show();
}

File[]allFiles似乎有null,请尝试检查null!!!

File[]allFiles=File.listFiles((;

用于(File individualFile:allFiles(

相关内容

最新更新