2010-09-15 80 views
0

我想安裝SD卡編程,我該如何檢查?我怎樣才能安裝SD卡編程?

+1

會有你已經收到了你問我這個問題每個答案附近的刻度。選擇你認爲合適的答案。用戶將得到10分,你會得到2.接受的費率是根據你問的問題的數量來計算你接受答案的問題的數量。 – DeRagan 2010-09-15 09:05:38

+0

@ok Rahul,我跟着那個..非常感謝 – sivaraj 2010-09-15 09:52:25

回答

1

如果您正在編寫普通的SDK應用程序,則無法自行安裝SD卡。

如果您爲設備製造商工作,或者您正在構建可以使用固件簽名密鑰簽名的應用程序,則可以使用USB_MASS_STORAGE_ENABLED

+0

@感謝回覆 – sivaraj 2010-09-15 14:20:07

+0

嘿馬克,你知道doubleTwist Player是如何做到的嗎? Plaer不需要電話紮根。 http://answers.oreilly.com/topic/1617-how-to-disable-android-usb-auto-mount/ – Maxim 2011-07-12 21:30:19

+0

@Maxim:不管它是什麼,它都不是SDK的一部分。 – CommonsWare 2011-07-12 21:38:10

1

爲了使其運作的,你需要添加用戶庫classes-full-debug.jar(從AOSP或釐米編譯)BEFOREandroid.jar(有在構建路徑面板罐子排序)或StorageManager不會解決registerListener() 你還需要android.permission.MOUNT_UNMOUNT_FILESYSTEMS

package x.y.z; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.os.Environment; 
import android.os.IBinder; 
import android.os.RemoteException; 
import android.os.storage.IMountService; 
import android.os.storage.StorageEventListener; 
import android.os.storage.StorageManager; 
import android.os.ServiceManager; 
import android.widget.TextView; 

public class MyActivity extends Activity 
{ 
    private static final String MOUNTPOINT = "/mnt/sdcard"; 
    private IMountService mMountService; 
    private StorageManager mStorageManager; 
    private TextView mText; 

    private final StorageEventListener mStorageListener = new StorageEventListener() 
    { 
     @Override 
     public void onStorageStateChanged(String path, String oldState, String newState) 
     { 
      String text = mText.getText() + "\n"; 
      text += "state changed notification that " + path + " changed state from " + oldState + " to " + newState; 
      mText.setText(text); 
     } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mText = (TextView) findViewById(R.id.textView); 

     if (mMountService == null) 
     { 
      IBinder service = ServiceManager.getService("mount"); 
      mMountService = IMountService.Stub.asInterface(service); 
     } 

     if (mStorageManager == null) 
     { 
      mStorageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE); 
      mStorageManager.registerListener(mStorageListener);   
     } 

     try 
     { 
      String state = mMountService.getVolumeState(MOUNTPOINT); 
      mText.setText("Media state " + state); 
      if (state.equals(Environment.MEDIA_MOUNTED)) 
       mMountService.unmountVolume(MOUNTPOINT, false); 
      else if (state.equals(Environment.MEDIA_UNMOUNTED)) 
       mMountService.mountVolume(MOUNTPOINT); 
     } catch (RemoteException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    protected void onDestroy() 
    { 
     if (mStorageManager != null && mStorageListener != null) 
      mStorageManager.unregisterListener(mStorageListener); 
     super.onDestroy(); 
    } 
}