我的应用程序在api23上运行并在api11或android4上崩溃
我认为G类飞机坠毁了。
在G类中,我已将Assets文件夹中的sqlite数据库复制到了外部存储。
当我在androidmanifest上清除android:name =“。G”时,我的应用程序在api11上运行,但在布局中单击按钮以读取数据库时无法从数据库中读取并导致我的应用程序崩溃

androidmanifest is= 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="view.viramaham.quiz.viraquiz"> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
 
<application 
 
    android:name=".G" 
    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=".Main_soalat"> 
 
    </activity> 
 
    <activity android:name=".pasokhnameh"> 
 
    </activity> 
 
  </application> 
 </manifest> 

我项目中的G类是=
package view.viramaham.quiz.viraquiz; 
 import android.app.Application; 
 import android.content.Context; 
 import android.content.Intent; 
 import android.database.SQLException; 
 import android.database.sqlite.SQLiteDatabase; 
 import android.os.Environment; 
 import android.support.v7.app.AppCompatActivity; 
 
 import java.io.File; 
 import java.io.FileOutputStream; 
 import java.io.IOException; 
 import java.io.InputStream; 
 import java.io.OutputStream; 
 
 
 
 
 public   class  G extends Application { 
public static Context context; 
public static String SDK_DIR =      Environment.getExternalStorageDirectory().getAbsolutePath(); 
public static String APP_DIR = SDK_DIR + "/database/"; 
public static SQLiteDatabase database; 
 
 
@Override 
public  void onCreate() { 
 
    super.onCreate(); 
 
 
    context = getApplicationContext(); 
    File file = new File(APP_DIR); 
 
    if (!file.exists()) { 
        try { 
            file.mkdirs(); 
            file.createNewFile(); 
                copyFromAssets(getBaseContext().     getAssets()  .  open     ("viraquiz.sqlite"), 
                    new FileOutputStream(APP_DIR + "/viraquiz.sqlite")); 
 
        } catch (IOException e) { 
 
            e.printStackTrace(); 
        } 
    }//payandatabase 
 
 
 
}//oncreate 
 
public void copyFromAssets(InputStream inputStream, OutputStream   outputStream) { 
 
    byte[] buffer = new byte[1024]; 
    int length; 
    try { 
        while ((length = inputStream.read(buffer)) > 0) { 
            outputStream.write(buffer, 0, length); 
 
        } 
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 
 
    try { 
        inputStream.close(); 
        outputStream.close(); 
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 
 
 
}//payan copyFromAssets 
 
 
 
} 

请您参考如下方法:

api 11第一个检查类G.我的类有错误。我更改了类G并在所有api上运行我的程序。
G类是

  package view.viramaham.quiz.viraquiz; 
 import android.app.Application; 
 import android.content.Context; 
 import android.content.Intent; 
 import android.database.SQLException; 
 import android.database.sqlite.SQLiteDatabase; 
 import android.os.Environment; 
 import android.support.v7.app.AppCompatActivity; 
 
 import java.io.File; 
 import java.io.FileOutputStream; 
 import java.io.IOException; 
 import java.io.InputStream; 
 import java.io.OutputStream; 
 
 
 
 
 public   class  G extends Application { 
public static Context context; 
public static String SDK_DIR =   Environment.getExternalStorageDirectory().getAbsolutePath(); 
public static String APP_DIR = SDK_DIR + "/database/"; 
public static SQLiteDatabase database; 
 
 
@Override 
public  void onCreate() { 
 
    super.onCreate(); 
 
 
    context = getApplicationContext(); 
    File file = new File(APP_DIR); 
 
    if (!file.exists()) { 
        try { 
            file.mkdirs(); 
            file.createNewFile(); 
            copyFromAssets(getBaseContext().getAssets().open("viraquiz.sqlite"), 
                    new FileOutputStream(APP_DIR + "/viraquiz.sqlite")); 
 
        } catch (IOException e) { 
 
            e.printStackTrace(); 
        } 
    }//payandatabase 
 
 
 
}//oncreate 
 
public void copyFromAssets(InputStream inputStream, OutputStream  outputStream) { 
 
    byte[] buffer = new byte[1024]; 
    int length; 
    try { 
        while ((length = inputStream.read(buffer)) > 0) { 
            outputStream.write(buffer, 0, length); 
 
        } 
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 
 
    try { 
        inputStream.close(); 
        outputStream.close(); 
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 
 
 
}//payan copyFromAssets 
}


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!