我的应用程序没有在API 23个 [英] My App is not working in API 23

查看:209
本文介绍了我的应用程序没有在API 23个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

音乐应用程序,它是<采用-SDK安卓的minSdkVersion =16机器人:targetSdkVersion =23/> ,它适用于API 16,但不是在API 23。

The music app which is <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />, it works on API 16 , but not in API 23.

在ListView没有装载歌曲,在API23选中时,在API16做工精细它显示为空。

The listview is not loaded with songs, it shows empty when checked in API23, working fine in API16.

在API22也工作正常,

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Environment;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class PlayListActivity extends ListActivity {
    // Songs list
    public ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

    SearchView sv;
    ListView lv;
    SimpleAdapter adapter;
    ArrayList<HashMap<String, String>> songsListData = new ArrayList<>();
    int songIndex;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.playlist);

        sv = (SearchView)findViewById(R.id.searchView);
        int id = sv.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
        TextView textView = (TextView) sv.findViewById(id);
        textView.setTextColor(Color.WHITE);
        textView.setHintTextColor(Color.LTGRAY);

        SongsManager plm = new SongsManager();
        // get all songs from sdcard
        this.songsList = plm.getPlayList(Environment.getExternalStorageDirectory());

        if(songsList!=null && songsList.size()>0) {
            // looping through playlist
            for (int i = 0; i < songsList.size(); i++) {
                // creating new HashMap
                HashMap<String, String> song = songsList.get(i);

                // adding HashList to ArrayList
                songsListData.add(song);
            }

            // Adding menuItems to ListView
             adapter = new SimpleAdapter(this, songsListData,
                    R.layout.playlist_item, new String[]{"songTitle"}, new int[]{
                    R.id.songTitle});


            setListAdapter(adapter);

            sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String newText) {
                    adapter.getFilter().filter(newText);
                    return false;
                }
            });
            // selecting single ListView item
             lv = getListView();

            // register for context menu
            registerForContextMenu(lv);

            // listening to single listitem click
            lv.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    // getting listitem index
                    songIndex = position;

                    // Starting new intent
                    Intent in = new Intent(getApplicationContext(),
                            MainActivity.class);
                    // Sending songIndex to PlayerActivity
                    in.putExtra("songIndex", songIndex);
                    setResult(100, in);
                    // Closing PlayListView
                    finish();
                }
            });
        }

        sv.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(final View view, boolean hasFocus) {
                if (hasFocus) {
                    view.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                            imm.showSoftInput(view.findFocus(), 0);
                        }
                    }, 200);
                }
            }
        });
    }
    //ListView listView = (ListView)findViewById(android.R.id.list);
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.playlist_contextmenu,menu);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

        switch (item.getItemId()){

            case R.id.delete_id:
                songsListData.remove(info.position);
                String path =  songsList.get(info.position).get("songPath");
                File filepath = new File(path);
                filepath.delete();
                adapter.notifyDataSetChanged();
                return true;
            default:
                return super.onContextItemSelected(item);
        }

    }
}

均匀的通知图标显示不出来,这表明空图标
我已经使用 NotificationCompat.Builder

的ListView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <SearchView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/searchView"
        android:background="#242424" //black colour
        android:queryHint="Search...">
    </SearchView>
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:divider="@drawable/gradient_horizontal_line"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector" // balck colour
        android:background="@drawable/list_selector"/>

</LinearLayout>

项目

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:background="@drawable/list_selector"
    android:foreground="#EBEBEB"
    android:padding="5dp">
    <!--android:background="@drawable/list_selector"-->
    <TextView 
        android:id="@+id/songTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:padding="10dp"
        android:background="@drawable/list_selector"
        android:textColor="#FFFFFF"/>  // white colour
    <!--android:color="#f3f3f3"-->
</LinearLayout>

list_selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selector style for listrow -->

    <item 
     android:state_selected="false"
        android:state_pressed="false" 
        android:drawable="@drawable/gradient_bg" />
    <item android:state_pressed="true" 
        android:drawable="@drawable/gradient_bg_hover" />
    <item android:state_selected="true"
     android:state_pressed="false" 
        android:drawable="@drawable/gradient_bg_hover" />
    </selector>

Styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

    <style name="btnStyleBlackpearl" parent="@android:style/Widget.Button">
        <item name="android:textSize">15sp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textColor">#C4C4C4</item>
        <item name="android:gravity">center</item>
        <item name="android:shadowColor">#000000</item>
        <item name="android:shadowDx">1</item>
        <item name="android:shadowDy">1</item>
        <item name="android:shadowRadius">0.6</item>
        <item name="android:background">@drawable/custom_btn_black_pearl</item>
        <item name="android:padding">10dip</item>
    </style>

</resources>

请指导..

API 16 - 工作

API 23 - 不工作 - 开启后存储在权限模拟器

推荐答案

有关快速修复:在设备/仿真器转到设置 - &GT;应用程序 - &GT;你的应用程序 - &GT;权限并确保存储检查上。从长远来看,你希望你的应用要求的权限在运行时使用新的API在API中加入23

For a quick fix: on the device/emulator goto Settings -> Apps -> Your App -> Permissions and make sure Storage is checked on. Long term, you want your app to request permissions at run time using the new APIs added in API 23.

这篇关于我的应用程序没有在API 23个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆