【问题标题】:my app working on api23 and crashed on api11我的应用程序在 api 23 上运行并在 api 11 上崩溃
【发布时间】:2017-06-04 21:40:45
【问题描述】:

我的应用在 api23 上运行并在 api11 或 android4 上崩溃 我认为 G 类导致了坠机。 在 G 类中,我已将资产文件夹上的 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



}

【问题讨论】:

  • 你能发布你的崩溃日志吗
  • 你能发布你的 build.gradle 吗?
  • 你为什么不用SQLiteAssetHelper
  • 使用手机,我没有访问权限。

标签: android sqlite class crash


【解决方案1】:

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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多