2

次のコードがあります。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()))); そして私のマニフェストに、私は追加しました:

           <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
            <action android:name="android.intent.ACTION_MEDIA_MOUNTED"/>
            <action android:name="android.intent.action.MEDIA_EJECT" />
            <action android:name="android.intent.ACTION_MEDIA_SCANNER_SCAN_FILE"/>
            <data android:scheme="file"/>
        </intent-filter>
    </activity>
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

次のエラーが表示されます

07-20 13:16:31.203: WARN/BroadcastQueue(395): Permission Denial: broadcasting Intent { act=android.intent.action.MEDIA_MOUNTED dat=file:///storage/sdcard0 flg=0x10 } from com.example.Music_Exchanger (pid=11797, uid=10080) is not exported from uid 10016 due to receiver com.android.providers.downloads/com.android.providers.downloads.DownloadReceiver

なぜ否定されるのかわからない。そして、どうすれば解決できますか?

ご存知の方、詳しく書いてくださると助かります。私はただの初心者です。

どうもありがとう!

4

3 に答える 3

2

ブロードキャスト レシーバーを実装し、その定義をマニフェスト ファイルに追加します。

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name" >
    <!--...-->

    <receiver
        android:name=".CustomReceiver"
        android:exported="true" >
    </receiver>
</application>

CustomReciever が BroadcastReceiver を拡張する場所。

于 2013-07-22T18:39:31.813 に答える
1

追加

<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>

別の注意: 外部ストレージへの書き込みの暗示には、外部ストレージの読み取り許可があります。

于 2013-07-20T05:52:13.383 に答える
0

SendBroadcast の代わりに MediaScannerConnection を使用します。

conn = new MediaScannerConnection( * * your context * * ,
     new MediaScannerConnection.MediaScannerConnectionClient() {@
         Override
         public void onScanCompleted(String path, Uri uri) {

             if (path.equals( * * your filename * * .getAbsolutePath())) {
                 Log.i("Scan Status", "Completed");
                 Log.i("uri: ", uri.toString());

                 conn.disconnect();
             }
         }@
         Override
         public void onMediaScannerConnected() {
             // TODO Auto-generated method stub
             conn.scanFile( * * your file name * * .getAbsolutePath(), null);

         }
     });
 conn.connect();
于 2014-08-13T08:59:54.790 に答える