2016-09-20 4 views
-3
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.devnagi.callblocke"> 


<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

enter image description here Не удалось определить стартовую активность, по умолчанию активность не найдена ошибка при запуске Активность в

<receiver android:name=".CallBarring"> 
     <intent-filter android:priority="100" > 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
    </receiver> 

<!--launched Activity --> 

<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=".AddToBlocklistActivity" 

    android:label="@string/app_name" 
    /> 

пакет com.example.devnagi.callblocke.callblocker;

импорт java.util.List;

импорт android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; Импорт android.os.Bundle; import android.support.v7.app.ActionBarActivity; импорт android.view.LayoutInflater; импортировать android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; импорт android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView;

импорт com.example.devnagi.callblocke.R;

общественного класса MainActivity расширяет ActionBarActivity реализует OnClickListener, OnItemLongClickListener {

// Декларация все на компонентах экрана Главного экрана частного Кнопка add_blacklist_btn; открытый список ListView; // Объект BlacklistDAO для запроса к базе данных private BlacklistDAO blackListDao; // Он содержит список объектов черного списка, извлеченных из базы данных public static List blockList; // Это значение содержит номер строки, который выбран пользователем для дальнейшего действия private int selectedRecordPosition = -1;

@Override protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);

// Initialization of the button of the Main screen 
    add_blacklist_btn = (Button) findViewById(R.id.add_blacklist_btn); 

    // Attachment of onClickListner for it 
    add_blacklist_btn.setOnClickListener(this); 
      // Initialization of the listview of the Main screen to display black listed phone numbers  listview = (ListView) 

findViewById (R.id.listview); // Устанавливаем заголовок конечного списка ListViewInstallation = (LayoutInflater) this.getSystemService (Context.LAYOUT_INFLATER_SERVICE); final View rowView = inflater.inflate (R.layout.list_item, listview, false); listview.addHeaderView (rowView); // Прикрепите OnItemLongClickListener для отслеживания действий пользователя и выполните соответственно listview.setOnItemLongClickListener (это); }
частная пустота populateNoRecordMsg() {

// If, no record found in the database, appropriate message needs to 

будет отображаться. if (blockList.size() == 0) {final TextView tv = новый TextView (это); tv.setPadding (5, 5, 5, 5); tv.setTextSize (15); tv.setText («Запись не найдена!»); listview.addFooterView (тв); }}

@Override общественного недействительными OnClick (View v) {// Визуализировать AddToBlocklistActivity экран один раз нажмите на кнопку "Добавить", если (v == add_blacklist_btn) {startActivity (новый Intent (это, AddToBlocklistActivity.class)); }} @Override public boolean onItemLongClick (родитель AdapterView, вид View, int position, long id) {// Если прессованная строка не является заголовком, обновляется selectedRecordPosition и // показывает диалог для дальнейшего выбора, если (позиция> 0) {selectedRecordPosition = позиция - 1; showDialog(); } return true; } @Override protected void onResume() {super.onResume(); // Инициализировать объект DAO blackListDao = новый BlacklistDAO (это); // Извлеките список Черных перечисленных номеров из базы данных с помощью объекта DAO blockList = blackListDao.getAllBlacklist(); // Удалить представление нижнего колонтитула if (listview.getChildCount()> 1) listview.removeFooterView (listview.getChildAt (listview.getChildCount() - 1)); // Теперь свяжите CustomArrayAdapter с ListView.setAdapter ListView (новый CustomArrayAdapter (это, R.layout.list_item, blockList)); // Если в базе данных нет записей, необходимо отобразить соответствующее сообщение. populateNoRecordMsg(); } private void showDialog() {// Перед удалением длинной нажатой записи необходимо указать для подтверждения с пользователем. Итак, постройте первый выпуск AlartBox AlertDialog.Builder alertDialogBuilder = новый AlertDialog.Builder (this); // Установите соответствующее сообщение. alertDialogBuilder.setMessage («Действительно ли вы хотите удалить выбранную запись ?»); // Добавить положительную кнопку и это действие. В нашем случае действие будет удалением данных alertDialogBuilder.setPositiveButton ("Удалить", нового DialogInterface.OnClickListener() { @Override общественных недействительного OnClick (DialogInterface arg0, внутр arg1) { попытки {

     blackListDao.delete(blockList.get(selectedRecordPosition)); 

         // Removing the same from the List to remove from display as well 
         blockList.remove(selectedRecordPosition); 
         listview.invalidateViews(); 

         // Reset the value of selectedRecordPosition 
         selectedRecordPosition = -1; 
         populateNoRecordMsg(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
      // Add a negative button and it's action. In our case, just hide the dialog box   alertDialogBuilder.setNegativeButton("Cancel", 
      new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
       } 
      }); 

    // Now, create the Dialog and show it.  final AlertDialog 

alertDialog = alertDialogBuilder.create(); alertDialog.show();}
общественного класса CustomArrayAdapter расширяет ArrayAdapter {

private LayoutInflater inflater; 
      // This would hold the database objects i.e. Blacklist  private List<Blacklist> records; 
      @SuppressWarnings("unchecked")  public CustomArrayAdapter(Context context, int resource, 

@SuppressWarnings («rawtypes») Объекты списка) {супер (контекст, ресурс, объекты); this.records = objects; inflater = (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView (int position, View convertView, родитель ViewGroup) { // Повторное использование представления, чтобы эффект прокрутки был гладким, если (convertView == null) convertView = inflater.inflate (R.layout.list_item, parent, false); // Получить номер телефона из объекта базы данных final Blacklist phoneNumber = records.get (position); // Установите экранный компонент для отображения результатов ((TextView) convertView.findViewById (R.id.serial_tv)). SetText ("" + (позиция +1)); ((TextView) convertView.findViewById (R.id.phone_number_tv)). SetText (номер телефонаNumber.phoneNumber); return convertView; }}}

+0

Что это за грязный текст? –

ответ

1

0 вы видите, что ошибка возникла после обновления вашего проекта IDEA, обновления версии Android Studio или создания нового APK, вам может понадобиться обновить кеш IDE.

File -> Invalidate Caches/Restart