2017-02-15 2 views
-1

Gerade schrieb diese einfache App zum Testen, eine Schaltfläche, die die Ausgabe mit einem spellcheckersession anzeigen.Android App funktioniert auf Emulator, aber nicht auf einem echten Gerät

Es funktioniert gut auf Emulator aber funktioniert nicht, wenn ich versuche, die App auf einem echten Gerät (Note2 laufenden android4.4.2) zu starten.

Kann mir jemand helfen zu verstehen, warum?

MainActivity.java:

package com.example.kevin.spellchecks; 

import android.content.Context; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.textservice.SentenceSuggestionsInfo; 
import android.view.textservice.SpellCheckerSession; 
import android.view.textservice.SuggestionsInfo; 
import android.view.textservice.TextInfo; 
import android.view.textservice.TextServicesManager; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Collections; 
import java.util.List; 

public class MainActivity extends AppCompatActivity implements SpellCheckerSession.SpellCheckerSessionListener{ 
    TextView tv1, tv2, tv3; 
    Button b1; 
    EditText et1; 
    private SpellCheckerSession mScs; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     b1 = (Button) findViewById(R.id.btn1); 
     tv1 = (TextView) findViewById(R.id.tv1); 
     tv2 = (TextView) findViewById(R.id.tv2); 
     tv3 = (TextView) findViewById(R.id.tv3); 
     et1 = (EditText) findViewById(R.id.et1); 

     final String[][] T9 = { 
       /* 0 */ {"a", "b", "c"}, 
       /* 1 */ {"d", "e", "f"}, 
       /* 2 */ {"g", "h", "i"}, 
       /* 3 */ {"j", "k", "l"}, 
       /* 4 */ {"m", "n", "o"}, 
       /* 5 */ {"p", "q", "r", "s"}, 
       /* 6 */ {"t", "u", "v"}, 
       /* 7 */ {"w", "x", "y", "z"} 
     }; 
     final ArrayList<String> prevalue = new ArrayList<String>(); 
     final ArrayList<String> buff = new ArrayList<String>(); 
     b1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       prevalue.clear(); 
       buff.clear(); 
       tv1.setText(""); 
       tv2.setText(""); 
       tv3.setText(""); 

       for(int et = 0; et< et1.length(); et++) { 
        String subvalue = et1.getText().toString().substring(et, et + 1); 
        if(prevalue.size() !=0){ 
         buff.add(prevalue.toString()); 
         prevalue.clear(); 
        } 
        for (int ii = 0; ii < T9[Integer.parseInt(subvalue)].length; ii++) { 
         if(buff.size() != 0){ 
          String[] buffarray = buff.toString().split("\\s*,\\s*"); 
          for(int ba = 0; ba<buffarray.length; ba++){ 
           prevalue.add(buffarray[ba].toString() + T9[Integer.parseInt(subvalue)][ii].toString()); 
          } 
         }else{ 
          prevalue.add(T9[Integer.parseInt(subvalue)][ii]); 
         } 
        } 
        buff.clear(); 
       } 
       tv1.append("prevalue size: " + prevalue.size() + '\n'); 
       for(int lp = 0; lp < prevalue.size(); lp++){ 
        String without1 = prevalue.get(lp).toString().replace("[", ""); 
        String without2 = without1.replace("]", ""); 
        tv1.append(without2 + '\n'); 
        try{ 
         mScs.getSuggestions(new TextInfo(without2.toString()), 1); 
        }catch (Exception e){ 
        } 
       } 
      } 
     }); 
    } 
    public void onResume() { 
     super.onResume(); 
     final TextServicesManager tsm = (TextServicesManager) 
       getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE); 
     mScs = tsm.newSpellCheckerSession(null, null, this, true); 
    } 
    public void onPause() { 
     super.onPause(); 
     if (mScs != null) { 
      mScs.close(); 
     } 
    } 
    public void onGetSuggestions(final SuggestionsInfo[] arg0) { 
     final StringBuilder sb = new StringBuilder(); 
     for (int i = 0; i < arg0.length; ++i) { 
      final int len = arg0[i].getSuggestionsCount(); 
      sb.append('\n'); 
      for (int j = 0; j < len; ++j) { 
       sb.append(arg0[i].getSuggestionAt(j)); 
      } 
     } 

     runOnUiThread(new Runnable() { 
      public void run() { 
       tv2.setText(tv2.getText().toString() + sb.toString() + ""); 
      } 
     }); 
    } 
    @Override 
    public void onGetSentenceSuggestions(SentenceSuggestionsInfo[] arg0) { 
     // TODO Auto-generated method stub 
    } 
} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.kevin.spellchecks.MainActivity"> 

    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/btn1" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/tv3" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:ems="10" 
     android:layout_alignTop="@+id/btn1" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:id="@+id/et1" /> 

    <TextView 
     android:text="Original" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/tv1" 
     android:layout_below="@+id/tv3" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:text="SpellCheck" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/tv2" 
     android:layout_alignBaseline="@+id/tv1" 
     android:layout_alignBottom="@+id/tv1" 
     android:layout_centerHorizontal="true" /> 
</RelativeLayout> 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.kevin.spellchecks"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     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> 
    </application> 

</manifest> 

build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "24.0.3" 
    defaultConfig { 
     applicationId "com.example.kevin.spellchecks" 
     minSdkVersion 16 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.1.1' 
    testCompile 'junit:junit:4.12' 
+3

Können Sie erläutern, was Sie meinen, indem Sie nicht arbeiten? Erhalten Sie eine Fehlermeldung? – LoveForDroid

+0

Es wird ein Fehler auftreten, wenn Sie die try catch-Ausnahme vor dem onResume beim Starten der App entfernen. –

Antwort

0

Für was es wert ist, habe ich es gerade geladen und lief es auf einem Samsung S5. Weitere Informationen würden helfen, wie lädt es, kommt Ihr Gerät als verbunden? Wie weit kommst du?

+0

Angenommen, in der Textansicht (tv2) wird durch runOnUthread ein neuer Wert angezeigt, um das Vorschlagswort durch die Rechtschreibprüfungssitzung zu erhalten. Es funktioniert nicht, wenn es in einem echten Gerät läuft. –

Verwandte Themen