安卓java怎么查找对应包中的图片
时间: 2023-10-11 22:04:53 浏览: 34
你可以使用代码实现以下步骤:
1. 获取当前应用的包信息:PackageManager pm = context.getPackageManager(); PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
2. 获取资源的Resources对象:Resources resources = pm.getResourcesForApplication(pi.applicationInfo);
3. 获取图片的资源ID:int resourceId = resources.getIdentifier("图片名字", "drawable", pi.packageName);
4. 加载图片:Drawable drawable = resources.getDrawable(resourceId);
注意:替换掉代码中的“图片名字”为你要查询的图片名称即可。
相关问题
android 怎样取得drawable资源的图片地址
在 Android 中,获取 drawable 资源的图片地址并不是一个直接的过程。因为应用程序的 drawable 资源是被编译进 APK 包中的,因此无法直接获取其文件路径。
但是,你可以通过以下方式来获取 drawable 资源的图片地址:
1. 使用 getResources() 方法获取资源的资源 ID:
```java
int resourceId = getResources().getIdentifier("drawable_name", "drawable", getPackageName());
```
这个方法会返回一个整型的资源 ID,这个 ID 可以用来获取对应的 drawable 资源。
2. 使用 BitmapFactory.decodeResource() 方法获取 Bitmap 对象:
```java
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId);
```
这个方法会返回一个 Bitmap 对象,这个对象包含了 drawable 资源的图片数据。
注意:获取 drawable 资源的图片地址并不是一个常规的操作,因为 drawable 资源通常是以二进制形式编译进应用程序的。因此,你应该尽可能地避免直接获取 drawable 资源的图片地址,而是尽可能使用资源 ID 或者 Bitmap 对象来操作图片。
如何在cordava打包的android包中集成阿里云的移动推送
要在 Cordova 打包的 Android 包中集成阿里云移动推送,需要执行以下步骤:
1. 在阿里云移动推送控制台中创建应用并获取 AppKey 和 AppSecret。
2. 在 Cordova 项目中安装阿里云移动推送插件:
```
cordova plugin add cordova-plugin-aliyun-push
```
3. 在 config.xml 文件中添加以下代码:
```
<platform name="android">
<preference name="com.alibaba.sdk.android.push.APP_KEY" value="YOUR_APP_KEY" />
<preference name="com.alibaba.sdk.android.push.APP_SECRET" value="YOUR_APP_SECRET" />
</platform>
```
将 `YOUR_APP_KEY` 和 `YOUR_APP_SECRET` 替换为你在第一步中获取到的对应值。
4. 在 AndroidManifest.xml 文件中添加以下权限和服务:
```
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<service android:name="com.alibaba.sdk.android.push.PushService" android:enabled="true" android:exported="false" />
<receiver android:name="com.alibaba.sdk.android.push.AlipushReceiver" android:exported="false">
<intent-filter>
<action android:name="com.alibaba.sdk.android.push.message.NOTIFY_MSG" />
<action android:name="com.alibaba.sdk.android.push.notification.CLEAR_NOTICE" />
<action android:name="com.alibaba.sdk.android.push.notification.OPEN_NOTICE" />
<action android:name="com.alibaba.sdk.android.push.notification.DELETE_NOTICE" />
</intent-filter>
</receiver>
<receiver android:name="com.alibaba.sdk.android.push.SystemEventReceiver">
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
```
5. 在 MainActivity.java 文件中添加以下代码:
```
import android.os.Bundle;
import org.apache.cordova.*;
import com.alibaba.sdk.android.push.AndroidPopupActivity;
import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Enable remote debugging via chrome://inspect
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
// Initialize Aliyun Push Service
PushServiceFactory.init(this.getApplicationContext());
}
}
```
这里需要注意,需要导入 `com.alibaba.sdk.android.push.AndroidPopupActivity` 和 `com.alibaba.sdk.android.push.noonesdk.PushServiceFactory`。
6. 最后,在阿里云移动推送控制台中配置推送通知和消息,并在应用中调用相应的 API 来注册设备和接收推送通知和消息。
以上步骤是在 Cordova 项目中集成阿里云移动推送的基本流程,具体实现可能会因项目环境和需求不同而有所变化。